#include "global.h"
void write_files(Name *files)
{
  while (files) {
    write_files(files->llink);
    {
      char indent_chars[500];
      FILE *temp_file;
      char *temp_name = tmpnam(NULL);
    #ifdef __SASC
      temp_name += 2; /* Bump temp_name by 2 characters to get past the "T:"
        that is tacked on by SAS/C. */
    #endif
      temp_file = fopen(temp_name, "w");
      if (!temp_file) {
    #ifdef _AMIGA
        fprintf(stderr, get_string(MSG_ERROR_38),
    #else
        fprintf(stderr, "%s: can't create %s for a temporary file\n",
    #endif
                command_name, temp_name);
        exit(EXIT_FAILURE);
      }
      if (verbose_flag)
    #ifdef _AMIGA
        fprintf(stderr, get_string(MSG_VERBOSE_17A), files->spelling);
    #else
        fprintf(stderr, "writing %s\n", files->spelling);
    #endif
      write_scraps(temp_file, files->defs, 0, indent_chars,
                   files->debug_flag, files->tab_flag, files->indent_flag);
      fclose(temp_file);
      if (compare_flag)
        {
          FILE *old_file = fopen(files->spelling, "r");
          if (old_file) {
            char x[BUFSIZ], y[BUFSIZ];
            int x_size, y_size;
            temp_file = fopen(temp_name, "r");
            do {
              x_size = fread(x, 1, BUFSIZ, old_file);
              y_size = fread(y, 1, BUFSIZ, temp_file);
            } while ((x_size == y_size) && !memcmp(x, y, x_size) &&
                     !feof(old_file) && !feof(temp_file));
            if ((x_size != y_size) || memcmp(x, y , x_size)) {
              fclose(old_file);
              fclose(temp_file);
              remove(files->spelling);
              rename(temp_name, files->spelling);
            } else {
              fclose(old_file);
              fclose(temp_file);
              remove(temp_name);
            }
          }
          else
            rename(temp_name, files->spelling);
        }
      else {
        remove(files->spelling);
        rename(temp_name, files->spelling);
      }
    }
    files = files->rlink;
  }
} 