home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / n / nuweb / Source / src / program_c < prev    next >
Encoding:
Text File  |  1997-05-15  |  2.4 KB  |  94 lines

  1.  
  2. #line 635 "nuweb.w"
  3. #include "global.h"
  4.  
  5. #line 2174 "nuweb.w"
  6. void write_files(Name *files)
  7. {
  8.   while (files) {
  9.     write_files(files->llink);
  10.     
  11. #line 2194 "nuweb.w"
  12.     {
  13.       char indent_chars[500];
  14.       FILE *temp_file;
  15.       char *temp_name = tmpnam(NULL);
  16.       temp_file = fopen(temp_name, "w");
  17.       if (!temp_file) {
  18.         fprintf(stderr, "%s: can't create %s for a temporary file\n",
  19.                 command_name, temp_name);
  20.         exit(-1);
  21.       }
  22.       if (verbose_flag)
  23.         fprintf(stderr, "writing %s\n", files->spelling);
  24.       write_scraps(temp_file, files->defs, 0, indent_chars,
  25.                    files->debug_flag, files->tab_flag, files->indent_flag);
  26.       fclose(temp_file);
  27.       if (compare_flag)
  28.         
  29. #line 2224 "nuweb.w"
  30.         {
  31.           FILE *old_file = fopen(files->spelling, "r");
  32.           if (old_file) {
  33.             int x, y;
  34.             temp_file = fopen(temp_name, "r");
  35.             if (compline_flag)
  36.               
  37. #line 2257 "nuweb.w"
  38.               {
  39.                 char cue[] = "\n#line ";
  40.                 int pos = 0, cuelen = strlen(cue);
  41.                 do {
  42.                   x = getc(old_file);
  43.                   y = getc(temp_file);
  44.                   if (x != cue[pos])
  45.                     pos = 0;
  46.                   if (x == y && x == cue[pos]) {
  47.                     pos++;
  48.                     if (pos == cuelen) {
  49.                       pos = 0;
  50.                       do x = getc(old_file); while (x != '\n' && x != EOF);
  51.                       do y = getc(temp_file); while (y != '\n' && y != EOF);
  52.                     }
  53.                   }
  54.                 } while (x == y && x != EOF);
  55.               }
  56.               
  57. #line 2230 "nuweb.w"
  58.         
  59.             else
  60.               
  61. #line 2249 "nuweb.w"
  62.               do {
  63.                 x = getc(old_file);
  64.                 y = getc(temp_file);
  65.               } while (x == y && x != EOF);
  66.               
  67. #line 2232 "nuweb.w"
  68.         
  69.             fclose(old_file);
  70.             fclose(temp_file);
  71.             if (x == y)
  72.               remove(temp_name);
  73.             else {
  74.               remove(files->spelling);
  75.               rename(temp_name, files->spelling);
  76.             }
  77.           }
  78.           else
  79.             rename(temp_name, files->spelling);
  80.         }
  81.         
  82. #line 2210 "nuweb.w"
  83.     
  84.       else {
  85.         remove(files->spelling);
  86.         rename(temp_name, files->spelling);
  87.       }
  88.     }
  89.     
  90. #line 2178 "nuweb.w"
  91.  
  92.     files = files->rlink;
  93.   }
  94. }