home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / nuweb087.zip / pass1.c < prev    next >
C/C++ Source or Header  |  1996-02-28  |  2KB  |  65 lines

  1. #include "global.h"
  2. void pass1(file_name)
  3.      char *file_name;
  4. {
  5.   if (verbose_flag)
  6.     fprintf(stderr, "reading %s\n", file_name);
  7.   source_open(file_name);
  8.   init_scraps();
  9.   macro_names = NULL;
  10.   file_names = NULL;
  11.   user_names = NULL;
  12.   {
  13.     int c = source_get();
  14.     while (c != EOF) {
  15.       if (c == '@')
  16.         {
  17.           c = source_get();
  18.           switch (c) {
  19.             case 'O':
  20.             case 'o': {
  21.                         Name *name = collect_file_name(); /* returns a pointer to the name entry */
  22.                         int scrap = collect_scrap();      /* returns an index to the scrap */
  23.                         {
  24.                           Scrap_Node *def = (Scrap_Node *) arena_getmem(sizeof(Scrap_Node));
  25.                           def->scrap = scrap;
  26.                           def->next = name->defs;
  27.                           name->defs = def;
  28.                         }
  29.                       }
  30.                       break;
  31.             case 'D':
  32.             case 'd': {
  33.                         Name *name = collect_macro_name();
  34.                         int scrap = collect_scrap();
  35.                         {
  36.                           Scrap_Node *def = (Scrap_Node *) arena_getmem(sizeof(Scrap_Node));
  37.                           def->scrap = scrap;
  38.                           def->next = name->defs;
  39.                           name->defs = def;
  40.                         }
  41.                       }
  42.                       break;
  43.             case '@':
  44.             case 'u':
  45.             case 'm':
  46.             case 'f': /* ignore during this pass */
  47.                       break;
  48.             default:  fprintf(stderr,
  49.                               "%s: unexpected @ sequence ignored (%s, line %d)\n",
  50.                               command_name, source_name, source_line);
  51.                       break;
  52.           }
  53.         }
  54.       c = source_get();
  55.     }
  56.   }
  57.   if (tex_flag)
  58.     search();
  59.   {
  60.     reverse_lists(file_names);
  61.     reverse_lists(macro_names);
  62.     reverse_lists(user_names);
  63.   }
  64. }
  65.