def.h revision 0eb10989
10eb10989Smrg/* $XdotOrg: $ */ 20eb10989Smrg/* $Xorg: def.h,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ 30eb10989Smrg/* 40eb10989Smrg 50eb10989SmrgCopyright (c) 1993, 1994, 1998 The Open Group. 60eb10989Smrg 70eb10989SmrgPermission to use, copy, modify, distribute, and sell this software and its 80eb10989Smrgdocumentation for any purpose is hereby granted without fee, provided that 90eb10989Smrgthe above copyright notice appear in all copies and that both that 100eb10989Smrgcopyright notice and this permission notice appear in supporting 110eb10989Smrgdocumentation. 120eb10989Smrg 130eb10989SmrgThe above copyright notice and this permission notice shall be included in 140eb10989Smrgall copies or substantial portions of the Software. 150eb10989Smrg 160eb10989SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 170eb10989SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 180eb10989SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 190eb10989SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 200eb10989SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 210eb10989SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 220eb10989Smrg 230eb10989SmrgExcept as contained in this notice, the name of The Open Group shall not be 240eb10989Smrgused in advertising or otherwise to promote the sale, use or other dealings 250eb10989Smrgin this Software without prior written authorization from The Open Group. 260eb10989Smrg 270eb10989Smrg*/ 280eb10989Smrg/* $XFree86: xc/config/makedepend/def.h,v 3.13tsi Exp $ */ 290eb10989Smrg 300eb10989Smrg#ifdef HAVE_CONFIG_H /* Autotooled for Xorg 7.0? */ 310eb10989Smrg# include "makedepend-config.h" 320eb10989Smrg# define USING_AUTOCONF 330eb10989Smrg#endif 340eb10989Smrg 350eb10989Smrg#include <X11/Xos.h> 360eb10989Smrg#include <X11/Xfuncproto.h> 370eb10989Smrg#include <stdlib.h> 380eb10989Smrg#include <stdio.h> 390eb10989Smrg#include <string.h> 400eb10989Smrg#include <ctype.h> 410eb10989Smrg#if 0 420eb10989Smrg#ifndef X_NOT_POSIX 430eb10989Smrg#ifndef _POSIX_SOURCE 440eb10989Smrg#define _POSIX_SOURCE 450eb10989Smrg#endif 460eb10989Smrg#endif 470eb10989Smrg#endif 480eb10989Smrg#include <sys/types.h> 490eb10989Smrg#include <fcntl.h> 500eb10989Smrg#include <sys/stat.h> 510eb10989Smrg 520eb10989Smrg#define MAXDEFINES 512 530eb10989Smrg#define MAXFILES 1024 540eb10989Smrg#define MAXINCFILES 128 /* "-include" files */ 550eb10989Smrg#define MAXDIRS 64 560eb10989Smrg#define SYMTABINC 10 /* must be > 1 for define() to work right */ 570eb10989Smrg#define TRUE 1 580eb10989Smrg#define FALSE 0 590eb10989Smrg 600eb10989Smrg/* the following must match the directives table in main.c */ 610eb10989Smrg#define IF 0 620eb10989Smrg#define IFDEF 1 630eb10989Smrg#define IFNDEF 2 640eb10989Smrg#define ELSE 3 650eb10989Smrg#define ENDIF 4 660eb10989Smrg#define DEFINE 5 670eb10989Smrg#define UNDEF 6 680eb10989Smrg#define INCLUDE 7 690eb10989Smrg#define LINE 8 700eb10989Smrg#define PRAGMA 9 710eb10989Smrg#define ERROR 10 720eb10989Smrg#define IDENT 11 730eb10989Smrg#define SCCS 12 740eb10989Smrg#define ELIF 13 750eb10989Smrg#define EJECT 14 760eb10989Smrg#define WARNING 15 770eb10989Smrg#define INCLUDENEXT 16 780eb10989Smrg#define IFFALSE 17 /* pseudo value --- never matched */ 790eb10989Smrg#define ELIFFALSE 18 /* pseudo value --- never matched */ 800eb10989Smrg#define INCLUDEDOT 19 /* pseudo value --- never matched */ 810eb10989Smrg#define IFGUESSFALSE 20 /* pseudo value --- never matched */ 820eb10989Smrg#define ELIFGUESSFALSE 21 /* pseudo value --- never matched */ 830eb10989Smrg#define INCLUDENEXTDOT 22 /* pseudo value --- never matched */ 840eb10989Smrg 850eb10989Smrg#ifdef DEBUG 860eb10989Smrgextern int _debugmask; 870eb10989Smrg/* 880eb10989Smrg * debug levels are: 890eb10989Smrg * 900eb10989Smrg * 0 show ifn*(def)*,endif 910eb10989Smrg * 1 trace defined/!defined 920eb10989Smrg * 2 show #include 930eb10989Smrg * 3 show #include SYMBOL 940eb10989Smrg * 4-6 unused 950eb10989Smrg */ 960eb10989Smrg#define debug(level,arg) { if (_debugmask & (1 << level)) warning arg; } 970eb10989Smrg#else 980eb10989Smrg#define debug(level,arg) /**/ 990eb10989Smrg#endif /* DEBUG */ 1000eb10989Smrg 1010eb10989Smrgtypedef unsigned char boolean; 1020eb10989Smrg 1030eb10989Smrgstruct symtab { 1040eb10989Smrg char *s_name; 1050eb10989Smrg char *s_value; 1060eb10989Smrg}; 1070eb10989Smrg 1080eb10989Smrg/* possible i_flag */ 1090eb10989Smrg#define DEFCHECKED (1<<0) /* whether defines have been checked */ 1100eb10989Smrg#define NOTIFIED (1<<1) /* whether we have revealed includes */ 1110eb10989Smrg#define MARKED (1<<2) /* whether it's in the makefile */ 1120eb10989Smrg#define SEARCHED (1<<3) /* whether we have read this */ 1130eb10989Smrg#define FINISHED (1<<4) /* whether we are done reading this */ 1140eb10989Smrg#define INCLUDED_SYM (1<<5) /* whether #include SYMBOL was found 1150eb10989Smrg Can't use i_list if TRUE */ 1160eb10989Smrgstruct inclist { 1170eb10989Smrg char *i_incstring; /* string from #include line */ 1180eb10989Smrg char *i_file; /* path name of the include file */ 1190eb10989Smrg struct inclist **i_list; /* list of files it itself includes */ 1200eb10989Smrg int i_listlen; /* length of i_list */ 1210eb10989Smrg struct symtab **i_defs; /* symbol table for this file and its 1220eb10989Smrg children when merged */ 1230eb10989Smrg int i_ndefs; /* current # defines */ 1240eb10989Smrg boolean *i_merged; /* whether we have merged child 1250eb10989Smrg defines */ 1260eb10989Smrg unsigned char i_flags; 1270eb10989Smrg}; 1280eb10989Smrg 1290eb10989Smrgstruct filepointer { 1300eb10989Smrg char *f_name; 1310eb10989Smrg char *f_p; 1320eb10989Smrg char *f_base; 1330eb10989Smrg char *f_end; 1340eb10989Smrg long f_len; 1350eb10989Smrg long f_line; 1360eb10989Smrg long cmdinc_count; 1370eb10989Smrg char **cmdinc_list; 1380eb10989Smrg long cmdinc_line; 1390eb10989Smrg}; 1400eb10989Smrg 1410eb10989Smrg#include <stdlib.h> 1420eb10989Smrg#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ 1430eb10989Smrgchar *malloc(), *realloc(); 1440eb10989Smrg#endif /* macII */ 1450eb10989Smrg 1460eb10989Smrgchar *copy(char *str); 1470eb10989Smrgint match(char *str, char **list); 1480eb10989Smrgchar *base_name(char *file); 1490eb10989Smrgchar *getnextline(struct filepointer *fp); 1500eb10989Smrgstruct symtab **slookup(char *symbol, struct inclist *file); 1510eb10989Smrgstruct symtab **isdefined(char *symbol, struct inclist *file, 1520eb10989Smrg struct inclist **srcfile); 1530eb10989Smrgstruct symtab **fdefined(char *symbol, struct inclist *file, 1540eb10989Smrg struct inclist **srcfile); 1550eb10989Smrgstruct filepointer *getfile(char *file); 1560eb10989Smrgvoid included_by(struct inclist *ip, 1570eb10989Smrg struct inclist *newfile); 1580eb10989Smrgstruct inclist *newinclude(char *newfile, char *incstring); 1590eb10989Smrgvoid inc_clean (void); 1600eb10989Smrgstruct inclist *inc_path(char *file, char *include, int type); 1610eb10989Smrg 1620eb10989Smrgvoid freefile(struct filepointer *fp); 1630eb10989Smrg 1640eb10989Smrgvoid define2(char *name, char *val, struct inclist *file); 1650eb10989Smrgvoid define(char *def, struct inclist *file); 1660eb10989Smrgvoid undefine(char *symbol, struct inclist *file); 1670eb10989Smrgint find_includes(struct filepointer *filep, 1680eb10989Smrg struct inclist *file, 1690eb10989Smrg struct inclist *file_red, 1700eb10989Smrg int recursion, boolean failOK); 1710eb10989Smrg 1720eb10989Smrgvoid recursive_pr_include(struct inclist *head, 1730eb10989Smrg char *file, char *base); 1740eb10989Smrgvoid add_include(struct filepointer *filep, 1750eb10989Smrg struct inclist *file, 1760eb10989Smrg struct inclist *file_red, 1770eb10989Smrg char *include, int type, 1780eb10989Smrg boolean failOK); 1790eb10989Smrg 1800eb10989Smrgint cppsetup(char *filename, 1810eb10989Smrg char *line, 1820eb10989Smrg struct filepointer *filep, 1830eb10989Smrg struct inclist *inc); 1840eb10989Smrg 1850eb10989Smrg 1860eb10989Smrgextern void fatalerr(char *, ...); 1870eb10989Smrgextern void warning(char *, ...); 1880eb10989Smrgextern void warning1(char *, ...); 189