#include #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); } }