|
|
1.1 ! root 1: /* Copyright (c) 1980 Regents of the University of California */ ! 2: ! 3: /* static char sccsid[] = "@(#)pc3.h 1.3 9/4/80"; */ ! 4: ! 5: /* ! 6: * a symbol table entry. ! 7: */ ! 8: struct symbol { ! 9: char *name; /* pointer to string table */ ! 10: short desc; /* symbol description */ ! 11: int lookup; /* whether new or old */ ! 12: union { /* either */ ! 13: struct { /* for a symbol, */ ! 14: struct symbol *fromp; /* its defining .p file */ ! 15: struct symbol *fromi; /* its defining .i file */ ! 16: long iline; /* the .i file line */ ! 17: struct symbol *rfilep; /* its resolving file */ ! 18: long rline; /* resolving file line */ ! 19: } sym_str; ! 20: time_t modtime; /* for a file, its st_mtime */ ! 21: } sym_un; ! 22: }; ! 23: ! 24: /* ! 25: * struct for an argument .o file. ! 26: */ ! 27: struct fileinfo { ! 28: FILE *file; ! 29: char *name; ! 30: time_t modtime; ! 31: off_t nextoffset; ! 32: }; ! 33: ! 34: /* ! 35: * old archive magic for error detection. ! 36: */ ! 37: #define OARMAG 0177545 ! 38: ! 39: /* ! 40: * this is used to trim pointers into the range of a mod of a prime. ! 41: */ ! 42: #define SHORT_ABS( n ) ( n & 077777 ) ! 43: ! 44: /* ! 45: * a prime number which gets sizeof( struct symboltableinfo ) ! 46: * up to a multiple of BUFSIZ. ! 47: */ ! 48: #define SYMBOLPRIME 1021 ! 49: ! 50: /* ! 51: * number of entries used in this symbol table, ! 52: * a chain to the next symbol table, ! 53: * and the entries. (pointers to struct symbols.) ! 54: */ ! 55: struct symboltableinfo { ! 56: long used; ! 57: struct symboltableinfo *chain; ! 58: struct symbol *entry[ SYMBOLPRIME ]; ! 59: }; ! 60: ! 61: /* ! 62: * if new struct symbols are needed, ! 63: * allocate this much space and hack it up into struct symbols. ! 64: */ ! 65: #define SYMBOLALLOC BUFSIZ ! 66: ! 67: /* ! 68: * a prime number which gets sizeof( struct stringtableinfo ) ! 69: * up to a multiple of BUFSIZ. ! 70: */ ! 71: #define STRINGPRIME 1021 ! 72: ! 73: /* ! 74: * number of entries used in this string table, ! 75: * a chain to the next string table, ! 76: * and the entries. (pointers to the character table.) ! 77: */ ! 78: struct stringtableinfo { ! 79: long used; ! 80: struct stringtableinfo *chain; ! 81: char *entry[ STRINGPRIME ]; ! 82: }; ! 83: ! 84: /* ! 85: * if more character table space is needed, ! 86: * allocate this much and hack it up into strings. ! 87: */ ! 88: #define CHARALLOC BUFSIZ ! 89: ! 90: /* ! 91: * uninitialized pointer ! 92: */ ! 93: #define NIL 0 ! 94: ! 95: /* ! 96: * an enumeration for error types ! 97: */ ! 98: #define FATAL 0 ! 99: #define WARNING 1 ! 100: ! 101: /* ! 102: * an enumeration for lookups ! 103: */ ! 104: #define NEW 0 ! 105: #define OLD 1 ! 106: ! 107: /* ! 108: * booleans ! 109: */ ! 110: #define BOOL int ! 111: #define FALSE 0 ! 112: #define TRUE 1 ! 113: ! 114: /* ! 115: * function types. ! 116: */ ! 117: struct symbol *entersymbol(); ! 118: struct symbol *symbolalloc(); ! 119: long stringhash(); ! 120: char *enterstring(); ! 121: char *charalloc(); ! 122: BOOL nextelement(); ! 123: time_t mtime(); ! 124: char *classify();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.