|
|
/*++
Copyright (c) 1994 - 1995 Microsoft Corporation
Module Name:
inf.c
Abstract:
Create New Inf from Old Inf
Author:
Muhunthan Sivapragasam (MuhuntS) 5-Oct-1995
Revision History:
--*/
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <memory.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#define COUNT 1000
#define LEN 25
#define LEN2 55
#define MANF 4
int main (argc, argv) int argc; char *argv[]; { FILE *OldInf, *NewInf; char Line[MAX_PATH]; char *DriverName, *ui, *secn, *type, *p; char Section[COUNT][LEN], Model[COUNT][LEN2]; int i, Lines;
if ( argc != 3 ) {
printf("Usage: %s <old-inf-name> <new-inf-name>\n", argv[0]); return; }
OldInf = NewInf = NULL;
OldInf = fopen(argv[1], "r"); NewInf = fopen(argv[2], "w"); if ( !OldInf ) {
printf("%s: Can't open %s to read\n", argv[0], argv[1]); goto Cleanup; } if ( !NewInf ) {
printf("%s: Can't open %s to write\n", argv[0], argv[2]); goto Cleanup; }
Lines = 0;
while ( fgets(Line, MAX_PATH-1, OldInf) ) {
DriverName = strtok(Line+1, "\""); strtok(NULL, "="); ui = strtok(NULL, ","); secn = strtok(NULL, ",") + 1; type = strtok(NULL, "\n");
while ( *ui == ' ' ) ++ui;
while ( *secn == ' ' ) ++secn;
while ( *type == ' ' ) ++type;
strcpy(Section[Lines], secn); strcpy(Model[Lines], DriverName);
for ( p = Section[Lines] ; *p ; ++p ) *p = toupper(*p);
for ( p = DriverName ; *p ; ++p ) {
if ( isalpha(*p) ) *p = toupper(*p); else if ( !isdigit(*p) ) *p = '_'; }
if ( strcmp(type, "rasdd") ) strcat(Section[Lines], ".DLL"); else if ( strcmp(type, "pscript") ) strcat(Section[Lines], ".PPD"); else if ( strcmp(type, "plotter") ) strcat(Section[Lines], ".PCD"); else printf("Error: <%s> <%s> <%s> <%s> on Line %d\n", DriverName, ui, secn, type, Lines);
if ( !Lines || strncmp(Model[Lines], Model[Lines-1], 3) ) fprintf(NewInf, "\n[%s]\n", DriverName);
fprintf(NewInf, "%%%s%%", DriverName); for ( i = strlen(DriverName)+1 ; i < 54 ; ++i ) fputc(' ', NewInf); fprintf(NewInf, "= %s\n", Section[Lines]); ++Lines; }
fprintf(NewInf,"\n\n\n\n\n");
qsort(Section, Lines, LEN, strcmp);
i = 0; while ( i < Lines ) {
fprintf(NewInf, "\[%s\]\n", Section[i]); fprintf(NewInf, "CopyFiles=@%s,", Section[i]);
p = Section[i] + strlen(Section[i]) - 3; if ( strcmp(p, "DLL") ) {
fprintf(NewInf, "RASDD\nDataSection=RASDD_DATA\n\n"); } else if ( strcmp(p, "PPD") ) {
fprintf(NewInf, "PSCRIPT\nDataSection=PSCRIPT_DATA\n\n"); } else if ( strcmp(p, "PCD") ) {
fprintf(NewInf, "PLOTTER\nDataSection=PLOTTER_DATA\n\n"); } else printf("%s -- ???\n", p);
++i; }
fprintf(NewInf, "\n\n\n\n\n");
fprintf(NewInf, "[PSCRIPT]\n"); fprintf(NewInf, "PSCRIPT.DLL\n"); fprintf(NewInf, "PSCRPTUI.DLL\n"); fprintf(NewInf, "PSCRIPT.HLP\n\n"); fprintf(NewInf, "[RASDD]\n"); fprintf(NewInf, "RASDD.DLL\n"); fprintf(NewInf, "RASDDUI.DLL\n"); fprintf(NewInf, "RASDDUI.HLP\n\n"); fprintf(NewInf, "[PLOTTER]\n"); fprintf(NewInf, "PLOTTER.DLL\n"); fprintf(NewInf, "PLOTUI.DLL\n"); fprintf(NewInf, "PLOTUI.HLP\n\n"); fprintf(NewInf, "\n\n\n\n\n");
fprintf(NewInf, "[PSCRIPT_DATA]\n"); fprintf(NewInf, "DriverFile=PSCRIPT.DLL\n"); fprintf(NewInf, "ConfigFile=PSCRPTUI.DLL\n"); fprintf(NewInf, "HelpFile=PSCRIPT.HLP\n\n"); fprintf(NewInf, "[RASDD_DATA]\n"); fprintf(NewInf, "DriverFile=RASDD.DLL\n"); fprintf(NewInf, "ConfigFile=RASDDUI.DLL\n"); fprintf(NewInf, "HelpFile=RASDD.HLP\n\n"); fprintf(NewInf, "[PLOTTER_DATA]\n"); fprintf(NewInf, "DriverFile=PLOTTER.DLL\n"); fprintf(NewInf, "ConfigFile=PLOTUI.DLL\n"); fprintf(NewInf, "HelpFile=PLOTUI.HLP\n\n"); fprintf(NewInf, "\n\n\n\n\n"); fprintf(NewInf, "[Strings]\n");
i = 0; for ( i = 0 ; i < Lines ; ++i ) {
for ( p = Model[i] ; *p ; ++p ) {
if ( isalpha(*p) ) fputc(toupper(*p), NewInf); else if ( !isdigit(*p) ) fputc('_', NewInf); else fputc(*p, NewInf);
}
fprintf(NewInf, "=\"%s\"\n", Model[i]); }
Cleanup:
if ( OldInf ) fclose(OldInf);
if ( NewInf ) fclose(NewInf);
}
|