/* after the options there must not be anything but filenames */
for(fnr=optind;fnr<argc;fnr++)
if(optind>=argc)/* no files specified */
usage(argv[0]);
else
{
char*filename,
*ptr2ext;
filename=malloc(strlen(argv[fnr])+2);
if(filename==NULL)
/* after the options there must not be anything but filenames */
for(fnr=optind;fnr<argc;fnr++)
{
perror("malloc");
continue;
}
char*filename,*ptr2ext;
strcpy(filename,argv[fnr]);
filename=malloc(strlen(argv[fnr])+2);
if(filename==NULL)
{
perror("malloc");
continue;
}
ptr2ext=strrchr(filename,'.');
/* no extension or extension not equal .pgc */
if(ptr2ext==NULL||strcmp(ptr2ext,".pgc")!=0)
{
ptr2ext=filename+strlen(filename);
ptr2ext[0]='.';
}
strcpy(filename,argv[fnr]);
/* make extension = .c */
ptr2ext[1]='c';
ptr2ext[2]='\0';
ptr2ext=strrchr(filename,'.');
/* no extension or extension not equal .pgc */
if(ptr2ext==NULL||strcmp(ptr2ext,".pgc")!=0)
{
ptr2ext=filename+strlen(filename);
ptr2ext[0]='.';
}
if(out_option==0)/* calculate the output name */
{
yyout=fopen(filename,"w");
if(yyout==NULL)
/* make extension = .c */
ptr2ext[1]='c';
ptr2ext[2]='\0';
if(out_option==0)/* calculate the output name */
{
perror(filename);
free(filename);
continue;
yyout=fopen(filename,"w");
if(yyout==NULL)
{
perror(filename);
free(filename);
continue;
}
}
}
yyin=fopen(input_filename=argv[fnr],"r");
if(yyin==NULL)
{
perror(argv[fnr]);
}
else
{
/* initialize lex */
lex_init();
yyin=fopen(input_filename=argv[fnr],"r");
if(yyin==NULL)
perror(argv[fnr]);
else
{
/* initialize lex */
lex_init();
/* we need two includes everytime */
fprintf(yyout,"/* These two include files are added by the preprocessor */\n#include <ecpgtype.h>\n#include <ecpglib.h>\n");
/* we need two includes */
fprintf(yyout,"/* Processed by ecpg (%d.%d.%d) */\n/*These two include files are added by the preprocessor */\n#include <ecpgtype.h>\n#include <ecpglib.h>\n",MAJOR_VERSION,MINOR_VERSION,PATCHLEVEL);