home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 1
/
GoldFishApril1994_CD1.img
/
d1xx
/
d162
/
cli_utilities
/
pwfix
/
pwfix.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-10-02
|
5KB
|
158 lines
/* PWfix.c Version 1.0
22 May 1988
Compiles clean under Manx 3.4a
Copyright (c) 1988 by Dan Fish
All rights reserved.
Permission is granted to redistribute this program in a non-profit
manner provided the source code is included in the distribution and
this copyright notice is unchanged.
Power Windows V1.3, wonderful program that it is, makes several
incorrect type declarations within the structures it writes for
compilation under Manx.
BorderVectors is defined as USHORT and should be SHORT
By default, the text pointer in an IntuiText structure
is defined as BYTE * and should be UBYTE *
The same is also true of the text pointer to the window
name in a NewWindow structure.
So far these are the only noted problems, though there may be more.
(I haven't generated anything extremely complicated with Power
Windows yet.) Left untreated, these incorrect declarations, cause
great aggravation in the form of a humongous compiler warning list.
Crude, but effective, this program reads the source code file
generated by Power Windows; through "casting" corrects the
troublesome buggers and writes out a corrected file with a .pwfix
suffix in the same directory.
If you plan on modifying the Power Windows source code (putting
things on the same line, etc.), I suggest you do so after running
PWfix on it, as its relies heavily on the line structure of the
code to accomplish its goals.
If you find other problems or modify this code substantially, please
drop a hardcopy of your new source code listing in the mail to:
Dan Fish
7293 W. Desert Cove #95
Peoria, Az.
85345
"C"-ya! */
#include <stdio.h>
#include <exec/types.h>
#define MAXLIN 100
#define TAB 9
main(argc,argv)
int argc;
char *argv[];
{
FILE *infile, *outfile;
static char fname[30]; /* copy of the input filename */
char string[MAXLIN]; /* maximum characters per line */
char *adr; /* variable pointer to above string */
int i=0, j=0, k=0; /* event counters */
int line=0; /* line counter */
int ch;
/* Initialize these next variables to some ridiculous value so lines
preceeding the first Itext and NewWindow structures won't be affected */
int Itxt=99999, NewWind=99999;
if (argc<2)
{
printf("\n");
printf(" Usage: PWFix <Power Windows filename>\n\n");
exit();
}
if((infile = fopen(argv[1],"r")) != NULL)
{
strcpy(fname,argv[1]);
strcat(fname,".pwfix");
outfile = fopen(fname,"w");
while (fgets(string,MAXLIN,infile)!=NULL) /* until EOF */
{
line++; /* Let's see now... what line are we on? */
if ( strncmp(string,"USHORT BorderVectors",20) == 0)
{
i++; /* running tab on # of occurences */
adr = string;
adr++; /* Get rid of the "U" */
fputs(adr,outfile);
}
else if (strncmp(string,"struct IntuiText IText",22)==0)
{
j++; /* another running tab */
Itxt = line; /* remember the line */
fputs(string,outfile);
}
else if (strncmp(string,"struct NewWindow",16)==0)
{
k++; /* yet another running tab */
NewWind = line; /* don't forget this line either */
fputs(string,outfile);
}
else if ((line == Itxt + 4)||(line == NewWind + 8))
{
adr = string;
adr ++; /* Get rid of the old Tab */
putc(TAB,outfile); /* Write a new tab */
fputs("(UBYTE *)",outfile); /* Add the "cast" */
fputs(adr,outfile); /* and tack on the string */
}
else /* Don't change anything, */
fputs(string,outfile); /* just pass on the line */
/* to the output file */
}
printf("\n");
printf("Corrected: %3d BorderVector(s)\n", i); /* Output */
printf(" %3d Intuitext structure(s)\n", j); /* the */
printf(" %3d NewWindow structure(s)\n\n", k); /* tally */
fclose(infile);
fclose(outfile);
exit();
}
printf("\n");
printf(" Ack ! -- Can't open \"%s\" for input!\n\n", argv[1]);
}
/* end of manual input source generation!!! */