#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