#include <stdio.h>
#define STDHEAD "#ifdef __STDC__"
#define STDELSE "#else"
#define STDEND "#endif"
char *strchr();
main(argc, argv)
int argc;
char **argv;
{
char buffer[4096];
FILE *fp;
FILE *fout = stdout;
char *ptr;
int got_head;
int cnt;
for(cnt = 1; cnt < argc ; cnt ++) {
if((fp = fopen(argv[cnt], "r")) == NULL)
continue;
fprintf(fout,"/* %s */\n",argv[cnt]);
while(fgets(buffer,sizeof(buffer), fp)) {
got_head = 0;
buffer[strlen(buffer) -1] = '\0';
if(strncmp(buffer,STDHEAD,strlen(STDHEAD)) != 0)
continue;
fprintf(fout,"#ifdef __STDC__\nextern ");
while((fgets(buffer,sizeof(buffer),fp) && !got_head)) {
buffer[strlen(buffer) -1] = '\0';
if(strncmp(buffer,STDELSE,strlen(STDELSE)) == 0) {
got_head = 1;
break;
}
fprintf(fout,"%s\n",buffer);
}
if(got_head)
fprintf(stdout,";\n#else\nextern ");
while(fgets(buffer,sizeof(buffer),fp)) {
buffer[strlen(buffer) -1] = '\0';
if(ptr = strchr(buffer,'(')) {
*(ptr + 1) = '\0';
fprintf(fout,"%s);\n#endif\n",buffer);
break;
}
else
fprintf(fout,"%s\n", buffer);
}
}
fclose(fp);
}
}
syntax highlighted by Code2HTML, v. 0.9.1