1998-05-01 23:32:41 +04:00
|
|
|
/* $XConsortium: def.h,v 1.25 94/04/17 20:10:33 gildea Exp $ */
|
|
|
|
/*
|
|
|
|
|
|
|
|
Copyright (c) 1993, 1994 X Consortium
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
|
|
all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
|
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
|
|
|
|
Except as contained in this notice, the name of the X Consortium shall not be
|
|
|
|
used in advertising or otherwise to promote the sale, use or other dealings
|
|
|
|
in this Software without prior written authorization from the X Consortium.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
1998-05-27 06:27:09 +04:00
|
|
|
#ifndef WIN32
|
1998-05-01 23:32:41 +04:00
|
|
|
#include <X11/Xosdefs.h>
|
|
|
|
#ifdef WIN32
|
|
|
|
#include <X11/Xw32defs.h>
|
|
|
|
#endif
|
|
|
|
#include <X11/Xfuncproto.h>
|
1998-05-27 06:27:09 +04:00
|
|
|
#endif
|
1998-05-01 23:32:41 +04:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <ctype.h>
|
|
|
|
#ifndef X_NOT_POSIX
|
|
|
|
#ifndef _POSIX_SOURCE
|
|
|
|
#define _POSIX_SOURCE
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <sys/stat.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#define MAXDEFINES 512
|
|
|
|
#define MAXFILES 1024 /* Increased from 512. -mcafee */
|
|
|
|
#define MAXDIRS 64
|
|
|
|
#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 */
|
|
|
|
#define IFGUESSFALSE 18 /* pseudo value --- never matched */
|
|
|
|
#define ELIFGUESSFALSE 19 /* pseudo value --- never matched */
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
extern int _debugmask;
|
|
|
|
/*
|
|
|
|
* debug levels are:
|
|
|
|
*
|
|
|
|
* 0 show ifn*(def)*,endif
|
|
|
|
* 1 trace defined/!defined
|
|
|
|
* 2 show #include
|
|
|
|
* 3 show #include SYMBOL
|
|
|
|
* 4-6 unused
|
|
|
|
*/
|
|
|
|
#define debug(level,arg) { if (_debugmask & (1 << level)) warning arg; }
|
|
|
|
#else
|
|
|
|
#define debug(level,arg) /**/
|
|
|
|
#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 */
|
|
|
|
int i_ndefs; /* current # defines */
|
|
|
|
int i_deflen; /* amount of space in table */
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
|
|
|
|
#ifndef X_NOT_STDC_ENV
|
|
|
|
#include <stdlib.h>
|
|
|
|
#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */
|
|
|
|
char *malloc(), *realloc();
|
|
|
|
#endif /* macII */
|
|
|
|
#else
|
|
|
|
char *malloc();
|
|
|
|
char *realloc();
|
|
|
|
#endif
|
|
|
|
|
|
|
|
char *copy(register char *str);
|
|
|
|
char *base_name(register char *file);
|
|
|
|
char *getline(register struct filepointer *filep);
|
|
|
|
struct symtab *slookup(register char *symbol, register struct inclist *file);
|
|
|
|
struct symtab *isdefined(register char *symbol, struct inclist *file,
|
|
|
|
struct inclist **srcfile);
|
|
|
|
struct symtab *fdefined(register char *symbol, struct inclist *file,
|
|
|
|
struct inclist **srcfile);
|
|
|
|
struct filepointer *getfile(char *file);
|
|
|
|
struct inclist *newinclude(register char *newfile, register char * incstring);
|
|
|
|
struct inclist *inc_path(register char *file, register char *include, boolean dot);
|
|
|
|
|
|
|
|
#if NeedVarargsPrototypes
|
|
|
|
extern int fatalerr(char *, ...);
|
|
|
|
extern void warning(char *, ...);
|
|
|
|
extern void warning1(char *, ...);
|
|
|
|
#endif
|