home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / nuweb087.zip / output.c.org < prev    next >
Text File  |  1996-02-29  |  1KB  |  52 lines

  1. #include "global.h"
  2. void write_files(files)
  3.      Name *files;
  4. {
  5.   while (files) {
  6.     write_files(files->llink);
  7.     {
  8.       char indent_chars[500];
  9.       FILE *temp_file;
  10.       char *temp_name = tempnam(".", 0);
  11.       temp_file = fopen(temp_name, "w");
  12.       if (!temp_file) {
  13.         fprintf(stderr, "%s: can't create %s for a temporary file\n",
  14.                 command_name, temp_name);
  15.         exit(-1);
  16.       }  
  17.       if (verbose_flag)
  18.         fprintf(stderr, "writing %s\n", files->spelling);
  19.       write_scraps(temp_file, files->defs, 0, indent_chars,
  20.                    files->debug_flag, files->tab_flag, files->indent_flag);
  21.       fclose(temp_file);
  22.       if (compare_flag)
  23.         {
  24.           FILE *old_file = fopen(files->spelling, "r");
  25.           if (old_file) {
  26.             int x, y;
  27.             temp_file = fopen(temp_name, "r");
  28.             do {
  29.               x = getc(old_file);
  30.               y = getc(temp_file);
  31.             } while (x == y && x != EOF);
  32.             fclose(old_file);
  33.             fclose(temp_file);
  34.             if (x == y)
  35.               remove(temp_name);
  36.             else {
  37.               remove(files->spelling);
  38.               rename(temp_name, files->spelling);
  39.             }
  40.           }
  41.           else
  42.             rename(temp_name, files->spelling);
  43.         }
  44.       else {
  45.         remove(files->spelling);
  46.         rename(temp_name, files->spelling);
  47.       }
  48.     }
  49.     files = files->rlink;
  50.   }
  51. }
  52.