home *** CD-ROM | disk | FTP | other *** search
- /**
- ** MODIFIED: 05/11/90 by MBN
- **
- ** Added default pathname separator character
- **/
-
- #ifndef PATHSEP
- #define PATHSEP '/'
- #endif
-
- /*
- * $XConsortium: def.h,v 1.8 89/06/13 18:52:47 jim Exp $
- */
- #include <stdio.h>
- #include <ctype.h>
-
- #ifdef VMS
- #include <types.h>
- #include <stat.h>
- #else
- #ifdef os2
- #include <sys\types.h>
- #include <fcntl.h>
- #include <sys\stat.h>
- #else
- #include <sys/types.h>
- #include <fcntl.h>
- #include <sys/stat.h>
- #endif
- #endif
-
- #ifdef USG
- #define u_char unchar
- #endif
-
- #define MAXDEFINES 512
- #define MAXFILES 512
- #define MAXDIRS 10
- #define SYMTABINC 10 /* must be > 1 for define() to work right */
- #define TRUE 1
- #define FALSE 0
-
- /* the following must match the directives table in main.c */
- #define IF 0
- #define IFDEF 1
- #define IFNDEF 2
- #define ELSE 3
- #define ENDIF 4
- #define DEFINE 5
- #define UNDEF 6
- #define INCLUDE 7
- #define LINE 8
- #define PRAGMA 9
- #define ERROR 10
- #define IDENT 11
- #define SCCS 12
- #define ELIF 13
- #define EJECT 14
- #define IFFALSE 15 /* pseudo value --- never matched */
- #define ELIFFALSE 16 /* pseudo value --- never matched */
- #define INCLUDEDOT 17 /* pseudo value --- never matched */
-
- #ifdef DEBUG
- extern int debug;
- #define debug0 ((debug&0x0001)==0) ? debug : log /* show ifn*(def)*,endif */
- #define debug1 ((debug&0x0002)==0) ? debug : log /* trace defined/!defined */
- #define debug2 ((debug&0x0004)==0) ? debug : log /* show #include */
- #define debug3 ((debug&0x0008)==0) ? debug : log /* show #include SYMBOL */
- #define debug4 ((debug&0x0010)==0) ? debug : log /* unused */
- #define debug5 ((debug&0x0020)==0) ? debug : log /* unused */
- #define debug6 ((debug&0x0040)==0) ? debug : log /* unused */
- #else
- #define debug0
- #define debug1
- #define debug2
- #define debug3
- #define debug4
- #define debug5
- #define debug6
- #endif /* DEBUG */
-
- typedef unsigned char boolean;
-
- struct symtab {
- char *s_name;
- char *s_value;
- };
-
- struct inclist {
- char *i_incstring; /* string from #include line */
- char *i_file; /* path name of the include file */
- struct inclist **i_list; /* list of files it itself includes */
- int i_listlen; /* length of i_list */
- struct symtab *i_defs; /* symbol table for this file */
- struct symtab *i_lastdef; /* last symbol defined */
- int i_deflen; /* number of defines */
- boolean i_defchecked; /* whether defines have been checked */
- boolean i_notified; /* whether we have revealed includes */
- boolean i_marked; /* whether it's in the makefile */
- boolean i_searched; /* whether we have read this */
- boolean i_included_sym; /* whether #include SYMBOL was found */
- /* Can't use i_list if TRUE */
- };
-
- struct filepointer {
- char *f_p;
- char *f_base;
- char *f_end;
- long f_len;
- long f_line;
- };
-
- char *copy();
- char *malloc();
- int is_source_file();
- char *realloc();
- char *getline();
- struct symtab *slookup();
- struct symtab *defined();
- struct symtab *fdefined();
- struct filepointer *getfile();
- struct inclist *newinclude();
- struct inclist *inc_path();
-