error "NON-BOGUS LIMITS NOT SUPPORTED?!?!"
main (argc, argv)     int argc;     char **argv;{  static const char gnu_lib_mark[] =    "This file is part of the GNU C Library";#ifndef NO_BOGOSITY_LIMITS# define BOGUS_LIMIT    MINIMUM_MAXIMUM_LINES  size_t loop_ct;#endif  char *apz_names[BOGUS_LIMIT];  size_t file_name_ct;  /* Before anything else, ensure we can allocate our file name buffer. */  file_name_buf = (char *) malloc (NAME_TABLE_SIZE);  if (file_name_buf == (char *) NULL)    {      fprintf (stderr, "fixincl cannot allocate 0x%08X bytes\n",               NAME_TABLE_SIZE);      exit (EXIT_FAILURE);    }  switch (argc)    {    case 1:      break;    case 2:      if (strcmp (argv[1], "-v") == 0)        {          static const char zFmt[] = "echo '%s'";          /* The 'version' option is really used to test that:               1.  The program loads correctly (no missing libraries)               2.  we can correctly run our server shell process               3.  that we can compile all the regular expressions.           */          run_compiles ();          sprintf (file_name_buf, zFmt, program_id);          fputs (file_name_buf + 5, stdout);          exit (strcmp (run_shell (file_name_buf), program_id));        }      freopen (argv[1], "r", stdin);      break;    default:      fputs ("fixincl ERROR:  too many command line arguments\n", stderr);      exit (EXIT_FAILURE);    }  initialize ();#ifndef NO_BOGOSITY_LIMITS  /*  Some systems only allow so many calls to fork(2).      This is inadequate for this program.  Consequently,      we must let a grandfather process spawn children      that then spawn all the processes that do the real work.      */  for (;;)    {      file_name_ct = 0;      {        char *pz_buf = file_name_buf;        /* Only the parent process can read from stdin without confusing           the world. (How does the child tell the parent to skip           forward?  Pipes and files behave differently.)  */        while (  (file_name_ct < BOGUS_LIMIT)              && (pz_buf < (file_name_buf + NAME_TABLE_SIZE - MAXPATHLEN)))          {            if (fgets (pz_buf, MAXPATHLEN, stdin) == (char *) NULL)              break;            while (isspace (*pz_buf))              pz_buf++;            if ((*pz_buf == '\0') || (*pz_buf == '#'))              continue;            apz_names[file_name_ct++] = pz_buf;            pz_buf += strlen (pz_buf);            while (isspace (pz_buf[-1]))              pz_buf--;            *pz_buf++ = '\0';          }      }      /*  IF we did not get any files this time thru          THEN we must be done.  */      if (file_name_ct == 0)        return EXIT_SUCCESS;      fflush (stdout);      fflush (stderr);      {        pid_t child = fork ();        if (child == NULLPROCESS)          break;        if (child == NOPROCESS)          {            fprintf (stderr, "Error %d (%s) forking in main\n",                     errno, strerror (errno));            exit (EXIT_FAILURE);          }#ifdef DEBUG        fprintf (stderr, "Waiting for %d to complete %d files\n",                 child, file_name_ct);#endif        wait_for_pid( child, file_name_ct );      }    }#else#error "NON-BOGUS LIMITS NOT SUPPORTED?!?!"#endif  /*     Here we are the child of the grandparent process.  The parent     of all the little fixup processes.  We ignore the deaths of     our children.  */  signal (SIGCLD,  SIG_IGN);  /*  For every file specified in stdandard in      (except as throttled for bogus reasons)...      */  for (loop_ct = 0; loop_ct < file_name_ct; loop_ct++)    {      char *pz_data;      char *pz_file_name = apz_names[loop_ct];      if (access (pz_file_name, R_OK) != 0)        {          int erno = errno;          fprintf (stderr, "Cannot access %s from %s\n\terror %d (%s)\n",                   pz_file_name, getcwd ((char *) NULL, MAXPATHLEN),                   erno, strerror (erno));        }      else if (pz_data = load_file (pz_file_name), (pz_data != (char *) NULL))        {          if (strstr (pz_data, gnu_lib_mark) == (char *) NULL)            process (pz_data, pz_file_name);          free ((void *) pz_data);        }    }  return EXIT_SUCCESS;}