diff --git a/ef/config/mkdepend/Makefile b/ef/config/mkdepend/Makefile index c20f44728e8..dfa596454e6 100644 --- a/ef/config/mkdepend/Makefile +++ b/ef/config/mkdepend/Makefile @@ -30,7 +30,7 @@ CSRCS = \ pr.c \ $(NULL) -CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\" -DNeedVarargsPrototypes +CFLAGS += -DINCLUDEDIR=\"/usr/include\" -DOBJSUFFIX=\".$(OBJ_SUFFIX)\" -DNeedVarargsPrototypes $(X11INCLUDES) MKDEPENDENCIES = include $(DEPTH)/config/rules.mk diff --git a/ef/config/mkdepend/cppsetup.c b/ef/config/mkdepend/cppsetup.c index d56bb5b1c63..e69de29bb2d 100644 --- a/ef/config/mkdepend/cppsetup.c +++ b/ef/config/mkdepend/cppsetup.c @@ -1,243 +0,0 @@ -/* $XConsortium: cppsetup.c,v 1.13 94/04/17 20:10:32 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. - -*/ - -#include "def.h" - -#ifdef CPP -/* - * This file is strictly for the sake of cpy.y and yylex.c (if - * you indeed have the source for cpp). - */ -#define IB 1 -#define SB 2 -#define NB 4 -#define CB 8 -#define QB 16 -#define WB 32 -#define SALT '#' -#if pdp11 | vax | ns16000 | mc68000 | ibm032 -#define COFF 128 -#else -#define COFF 0 -#endif -/* - * These variables used by cpy.y and yylex.c - */ -extern char *outp, *inp, *newp, *pend; -extern char *ptrtab; -extern char fastab[]; -extern char slotab[]; - -/* - * cppsetup - */ -struct filepointer *currentfile; -struct inclist *currentinc; - -int cppsetup(line, filep, inc) - register char *line; - register struct filepointer *filep; - register struct inclist *inc; -{ - register char *p, savec; - static boolean setupdone = FALSE; - boolean value; - - if (!setupdone) { - cpp_varsetup(); - setupdone = TRUE; - } - - currentfile = filep; - currentinc = inc; - inp = newp = line; - for (p=newp; *p; p++) - ; - - /* - * put a newline back on the end, and set up pend, etc. - */ - *p++ = '\n'; - savec = *p; - *p = '\0'; - pend = p; - - ptrtab = slotab+COFF; - *--inp = SALT; - outp=inp; - value = yyparse(); - *p = savec; - return(value); -} - -struct symtab *lookup(symbol) - char *symbol; -{ - static struct symtab undefined; - struct symtab *sp; - - sp = isdefined(symbol, currentinc, NULL); - if (sp == NULL) { - sp = &undefined; - sp->s_value = NULL; - } - return (sp); -} - -pperror(tag, x0,x1,x2,x3,x4) - int tag,x0,x1,x2,x3,x4; -{ - warning("\"%s\", line %d: ", currentinc->i_file, currentfile->f_line); - warning(x0,x1,x2,x3,x4); -} - - -yyerror(s) - register char *s; -{ - fatalerr("Fatal error: %s\n", s); -} -#else /* not CPP */ - -#include "ifparser.h" -struct _parse_data { - struct filepointer *filep; - struct inclist *inc; - const char *line; -}; - -static const char * -_my_if_errors (ip, cp, expecting) - IfParser *ip; - const char *cp; - const char *expecting; -{ - struct _parse_data *pd = (struct _parse_data *) ip->data; - int lineno = pd->filep->f_line; - char *filename = pd->inc->i_file; - char prefix[300]; - int prefixlen; - int i; - - sprintf (prefix, "\"%s\":%d", filename, lineno); - prefixlen = strlen(prefix); - fprintf (stderr, "%s: %s", prefix, pd->line); - i = cp - pd->line; - if (i > 0 && pd->line[i-1] != '\n') { - putc ('\n', stderr); - } - for (i += prefixlen + 3; i > 0; i--) { - putc (' ', stderr); - } - fprintf (stderr, "^--- expecting %s\n", expecting); - return NULL; -} - - -#define MAXNAMELEN 256 - -static struct symtab * -_lookup_variable (ip, var, len) - IfParser *ip; - const char *var; - int len; -{ - char tmpbuf[MAXNAMELEN + 1]; - struct _parse_data *pd = (struct _parse_data *) ip->data; - - if (len > MAXNAMELEN) - return 0; - - strncpy (tmpbuf, var, len); - tmpbuf[len] = '\0'; - return isdefined (tmpbuf, pd->inc, NULL); -} - - -static int -_my_eval_defined (ip, var, len) - IfParser *ip; - const char *var; - int len; -{ - if (_lookup_variable (ip, var, len)) - return 1; - else - return 0; -} - -#define isvarfirstletter(ccc) (isalpha(ccc) || (ccc) == '_') - -static int -_my_eval_variable (ip, var, len) - IfParser *ip; - const char *var; - int len; -{ - struct symtab *s; - - s = _lookup_variable (ip, var, len); - if (!s) - return 0; - do { - var = s->s_value; - if (!isvarfirstletter(*var)) - break; - s = _lookup_variable (ip, var, strlen(var)); - } while (s); - - return atoi(var); -} - - -int -cppsetup(line, filep, inc) - register char *line; - register struct filepointer *filep; - register struct inclist *inc; -{ - IfParser ip; - struct _parse_data pd; - int val = 0; - - pd.filep = filep; - pd.inc = inc; - pd.line = line; - ip.funcs.handle_error = _my_if_errors; - ip.funcs.eval_defined = _my_eval_defined; - ip.funcs.eval_variable = _my_eval_variable; - ip.data = (char *) &pd; - - (void) ParseIfExpression (&ip, line, &val); - if (val) - return IF; - else - return IFFALSE; -} -#endif /* CPP */ - diff --git a/ef/config/mkdepend/def.h b/ef/config/mkdepend/def.h index 8d45f2f6d8d..e69de29bb2d 100644 --- a/ef/config/mkdepend/def.h +++ b/ef/config/mkdepend/def.h @@ -1,157 +0,0 @@ -/* $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. - -*/ - -#include -#include -#include -#include -#include -#include -#include - -#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 -#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ -char *malloc(), *realloc(); -#endif /* macII */ -#else -char *malloc(); -char *realloc(); -#endif - -char *copy(); -char *base_name(); -char *getline(); -struct symtab *slookup(); -struct symtab *isdefined(); -struct symtab *fdefined(); -struct filepointer *getfile(); -struct inclist *newinclude(); -struct inclist *inc_path(); -void remove_dotdot(char *path); -int isdot(char *p); -int isdotdot(char *p); -int issymbolic(char *dir, char *component); -void define2(char *name, char *val, struct inclist *file); -void pr(struct inclist *ip, char *file, char *base); -void included_by(struct inclist *ip, struct inclist *newfile); -int find_includes(struct filepointer *filep, struct inclist *file, struct inclist *file_red, int recursion, boolean failOK); -void freefile(struct filepointer *fp); -int deftype (char *line, struct filepointer *filep, struct inclist *file_red, struct inclist *file, int parse_it); -void recursive_pr_include(struct inclist *head, char *file, char *base); -void inc_clean (); -void define(char *def, struct inclist *file); -void redirect(char *line, char *makefile); -int gobble(struct filepointer *filep, struct inclist *file, struct inclist *file_red); -void undefine(char *symbol, struct inclist *file); -void add_include(struct filepointer *filep, struct inclist *file, struct inclist *file_red, char *include, boolean dot, int failOK); -int match(char *str, char **list); -int zero_value(char *exp, struct filepointer *filep, struct inclist *file_red); -int cppsetup(char *line, struct filepointer *filep, struct inclist *inc); - -#if NeedVarargsPrototypes -extern void fatalerr(char *, ...); -extern void warning(char *, ...); -extern void warning1(char *, ...); -#endif diff --git a/ef/config/mkdepend/ifparser.c b/ef/config/mkdepend/ifparser.c index 23dbc92b9f1..e69de29bb2d 100644 --- a/ef/config/mkdepend/ifparser.c +++ b/ef/config/mkdepend/ifparser.c @@ -1,462 +0,0 @@ -/* - * $XConsortium: ifparser.c,v 1.8 95/06/03 00:01:41 gildea Exp $ - * - * Copyright 1992 Network Computing Devices, Inc. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices may not be - * used in advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. Network Computing Devices makes - * no representations about the suitability of this software for any purpose. - * It is provided ``as is'' without express or implied warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * Author: Jim Fulton - * Network Computing Devices, Inc. - * - * Simple if statement processor - * - * This module can be used to evaluate string representations of C language - * if constructs. It accepts the following grammar: - * - * EXPRESSION := VALUE - * | VALUE BINOP EXPRESSION - * - * VALUE := '(' EXPRESSION ')' - * | '!' VALUE - * | '-' VALUE - * | 'defined' '(' variable ')' - * | 'defined' variable - * | # variable '(' variable-list ')' - * | variable - * | number - * - * BINOP := '*' | '/' | '%' - * | '+' | '-' - * | '<<' | '>>' - * | '<' | '>' | '<=' | '>=' - * | '==' | '!=' - * | '&' | '|' - * | '&&' | '||' - * - * The normal C order of precidence is supported. - * - * - * External Entry Points: - * - * ParseIfExpression parse a string for #if - */ - -#include -#include -#include "ifparser.h" -#include - -extern int remove_dotdot(char *path); - -/**************************************************************************** - Internal Macros and Utilities for Parser - ****************************************************************************/ - -#define DO(val) if (!(val)) return NULL -#define CALLFUNC(ggg,fff) (*((ggg)->funcs.fff)) -#define SKIPSPACE(ccc) while (isspace(*ccc)) ccc++ -#define isvarfirstletter(ccc) (isalpha(ccc) || (ccc) == '_') - - -static const char * -parse_variable (g, cp, varp) - IfParser *g; - const char *cp; - const char **varp; -{ - SKIPSPACE (cp); - - if (!isvarfirstletter (*cp)) - return CALLFUNC(g, handle_error) (g, cp, "variable name"); - - *varp = cp; - /* EMPTY */ - for (cp++; isalnum(*cp) || *cp == '_'; cp++) ; - return cp; -} - - -static const char * -parse_number (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - SKIPSPACE (cp); - - if (!isdigit(*cp)) - return CALLFUNC(g, handle_error) (g, cp, "number"); - -#ifdef WIN32 - *valp = strtol(cp, &cp, 0); -#else - *valp = atoi (cp); - /* EMPTY */ - for (cp++; isdigit(*cp); cp++) ; -#endif - return cp; -} - - -static const char * -parse_value (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - const char *var; - - *valp = 0; - - SKIPSPACE (cp); - if (!*cp) - return cp; - - switch (*cp) { - case '(': - DO (cp = ParseIfExpression (g, cp + 1, valp)); - SKIPSPACE (cp); - if (*cp == '?') - while (*cp != ')') - cp++; - - if (*cp != ')') - return CALLFUNC(g, handle_error) (g, cp, ")"); - - return cp + 1; /* skip the right paren */ - - case '!': - DO (cp = parse_value (g, cp + 1, valp)); - *valp = !(*valp); - return cp; - - case '-': - DO (cp = parse_value (g, cp + 1, valp)); - *valp = -(*valp); - return cp; - - case '#': - DO (cp = parse_variable (g, cp + 1, &var)); - SKIPSPACE (cp); - if (*cp != '(') - return CALLFUNC(g, handle_error) (g, cp, "("); - do { - DO (cp = parse_variable (g, cp + 1, &var)); - SKIPSPACE (cp); - } while (*cp && *cp != ')'); - if (*cp != ')') - return CALLFUNC(g, handle_error) (g, cp, ")"); - *valp = 1; /* XXX */ - return cp + 1; - - case 'd': - if (strncmp (cp, "defined", 7) == 0 && !isalnum(cp[7])) { - int paren = 0; - int len; - - cp += 7; - SKIPSPACE (cp); - if (*cp == '(') { - paren = 1; - cp++; - } - DO (cp = parse_variable (g, cp, &var)); - len = cp - var; - SKIPSPACE (cp); - if (paren && *cp != ')') - return CALLFUNC(g, handle_error) (g, cp, ")"); - *valp = (*(g->funcs.eval_defined)) (g, var, len); - return cp + paren; /* skip the right paren */ - } - /* fall out */ - } - - if (isdigit(*cp)) { - DO (cp = parse_number (g, cp, valp)); - } else if (!isvarfirstletter(*cp)) - return CALLFUNC(g, handle_error) (g, cp, "variable or number"); - else { - DO (cp = parse_variable (g, cp, &var)); - *valp = (*(g->funcs.eval_variable)) (g, var, cp - var); - } - - return cp; -} - - - -static const char * -parse_product (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_value (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '*': - DO (cp = parse_product (g, cp + 1, &rightval)); - *valp = (*valp * rightval); - break; - - case '/': - DO (cp = parse_product (g, cp + 1, &rightval)); - *valp = (*valp / rightval); - break; - - case '%': - DO (cp = parse_product (g, cp + 1, &rightval)); - *valp = (*valp % rightval); - break; - } - return cp; -} - - -static const char * -parse_sum (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_product (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '+': - DO (cp = parse_sum (g, cp + 1, &rightval)); - *valp = (*valp + rightval); - break; - - case '-': - DO (cp = parse_sum (g, cp + 1, &rightval)); - *valp = (*valp - rightval); - break; - } - return cp; -} - - -static const char * -parse_shift (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_sum (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '<': - if (cp[1] == '<') { - DO (cp = parse_shift (g, cp + 2, &rightval)); - *valp = (*valp << rightval); - } - break; - - case '>': - if (cp[1] == '>') { - DO (cp = parse_shift (g, cp + 2, &rightval)); - *valp = (*valp >> rightval); - } - break; - } - return cp; -} - - -static const char * -parse_inequality (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_shift (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '<': - if (cp[1] == '=') { - DO (cp = parse_inequality (g, cp + 2, &rightval)); - *valp = (*valp <= rightval); - } else { - DO (cp = parse_inequality (g, cp + 1, &rightval)); - *valp = (*valp < rightval); - } - break; - - case '>': - if (cp[1] == '=') { - DO (cp = parse_inequality (g, cp + 2, &rightval)); - *valp = (*valp >= rightval); - } else { - DO (cp = parse_inequality (g, cp + 1, &rightval)); - *valp = (*valp > rightval); - } - break; - } - return cp; -} - - -static const char * -parse_equality (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_inequality (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '=': - if (cp[1] == '=') - cp++; - DO (cp = parse_equality (g, cp + 1, &rightval)); - *valp = (*valp == rightval); - break; - - case '!': - if (cp[1] != '=') - break; - DO (cp = parse_equality (g, cp + 2, &rightval)); - *valp = (*valp != rightval); - break; - } - return cp; -} - - -static const char * -parse_band (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_equality (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '&': - if (cp[1] != '&') { - DO (cp = parse_band (g, cp + 1, &rightval)); - *valp = (*valp & rightval); - } - break; - } - return cp; -} - - -static const char * -parse_bor (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_band (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '|': - if (cp[1] != '|') { - DO (cp = parse_bor (g, cp + 1, &rightval)); - *valp = (*valp | rightval); - } - break; - } - return cp; -} - - -static const char * -parse_land (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_bor (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '&': - if (cp[1] != '&') - return CALLFUNC(g, handle_error) (g, cp, "&&"); - DO (cp = parse_land (g, cp + 2, &rightval)); - *valp = (*valp && rightval); - break; - } - return cp; -} - - -static const char * -parse_lor (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - int rightval; - - DO (cp = parse_land (g, cp, valp)); - SKIPSPACE (cp); - - switch (*cp) { - case '|': - if (cp[1] != '|') - return CALLFUNC(g, handle_error) (g, cp, "||"); - DO (cp = parse_lor (g, cp + 2, &rightval)); - *valp = (*valp || rightval); - break; - } - return cp; -} - - -/**************************************************************************** - External Entry Points - ****************************************************************************/ - -const char * -ParseIfExpression (g, cp, valp) - IfParser *g; - const char *cp; - int *valp; -{ - return parse_lor (g, cp, valp); -} - - diff --git a/ef/config/mkdepend/imakemdep.h b/ef/config/mkdepend/imakemdep.h index 3487c3c7ab0..e69de29bb2d 100644 --- a/ef/config/mkdepend/imakemdep.h +++ b/ef/config/mkdepend/imakemdep.h @@ -1,727 +0,0 @@ - -/* $XConsortium: imakemdep.h,v 1.83 95/04/07 19:47:46 kaleb Exp $ */ -/* $XFree86: xc/config/imake/imakemdep.h,v 3.12 1995/07/08 10:22:17 dawes 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. - -*/ - - -/* - * This file contains machine-dependent constants for the imake utility. - * When porting imake, read each of the steps below and add in any necessary - * definitions. In general you should *not* edit ccimake.c or imake.c! - */ - -#ifdef CCIMAKE -/* - * Step 1: imake_ccflags - * Define any special flags that will be needed to get imake.c to compile. - * These will be passed to the compile along with the contents of the - * make variable BOOTSTRAPCFLAGS. - */ -#ifdef hpux -#ifdef hp9000s800 -#define imake_ccflags "-DSYSV" -#else -#define imake_ccflags "-Wc,-Nd4000,-Ns3000 -DSYSV" -#endif -#endif - -#if defined(macII) || defined(_AUX_SOURCE) -#define imake_ccflags "-DmacII -DSYSV" -#endif - -#ifdef stellar -#define imake_ccflags "-DSYSV" -#endif - -#if defined(USL) || defined(Oki) || defined(NCR) -#define imake_ccflags "-Xc -DSVR4" -#endif - -#ifdef sony -#if defined(SYSTYPE_SYSV) || defined(_SYSTYPE_SYSV) -#define imake_ccflags "-DSVR4" -#else -#include -#if NEWSOS < 41 -#define imake_ccflags "-Dbsd43 -DNOSTDHDRS" -#else -#if NEWSOS < 42 -#define imake_ccflags "-Dbsd43" -#endif -#endif -#endif -#endif - -#ifdef _CRAY -#define imake_ccflags "-DSYSV -DUSG" -#endif - -#if defined(_IBMR2) || defined(aix) -#define imake_ccflags "-Daix -DSYSV" -#endif - -#ifdef Mips -# if defined(SYSTYPE_BSD) || defined(BSD) || defined(BSD43) -# define imake_ccflags "-DBSD43" -# else -# define imake_ccflags "-DSYSV" -# endif -#endif - -#ifdef is68k -#define imake_ccflags "-Dluna -Duniosb" -#endif - -#ifdef SYSV386 -# ifdef SVR4 -# define imake_ccflags "-Xc -DSVR4" -# else -# define imake_ccflags "-DSYSV" -# endif -#endif - -#ifdef SVR4 -# ifdef i386 -# define imake_ccflags "-Xc -DSVR4" -# endif -#endif - -#ifdef SYSV -# ifdef i386 -# define imake_ccflags "-DSYSV" -# endif -#endif - -#ifdef __convex__ -#define imake_ccflags "-fn -tm c1" -#endif - -#ifdef apollo -#define imake_ccflags "-DX_NOT_POSIX" -#endif - -#ifdef WIN32 -#define imake_ccflags "-nologo -batch -D__STDC__" -#endif - -#ifdef __uxp__ -#define imake_ccflags "-DSVR4 -DANSICPP" -#endif - -#ifdef __sxg__ -#define imake_ccflags "-DSYSV -DUSG -DNOSTDHDRS" -#endif - -#ifdef sequent -#define imake_ccflags "-DX_NOT_STDC_ENV -DX_NOT_POSIX" -#endif - -#ifdef _SEQUENT_ -#define imake_ccflags "-DSYSV -DUSG" -#endif - -#if defined(SX) || defined(PC_UX) -#define imake_ccflags "-DSYSV" -#endif - -#ifdef nec_ews_svr2 -#define imake_ccflags "-DUSG" -#endif - -#if defined(nec_ews_svr4) || defined(_nec_ews_svr4) || defined(_nec_up) || defined(_nec_ft) -#define imake_ccflags "-DSVR4" -#endif - -#ifdef MACH -#define imake_ccflags "-DNOSTDHDRS" -#endif - -/* this is for OS/2 under EMX. This won't work with DOS */ -#if defined(__EMX__) -#define imake_ccflags "-DBSD43" -#endif - -#else /* not CCIMAKE */ -#ifndef MAKEDEPEND -/* - * Step 2: dup2 - * If your OS doesn't have a dup2() system call to duplicate one file - * descriptor onto another, define such a mechanism here (if you don't - * already fall under the existing category(ies). - */ -#if defined(SYSV) && !defined(_CRAY) && !defined(Mips) && !defined(_SEQUENT_) -#define dup2(fd1,fd2) ((fd1 == fd2) ? fd1 : (close(fd2), \ - fcntl(fd1, F_DUPFD, fd2))) -#endif - - -/* - * Step 3: FIXUP_CPP_WHITESPACE - * If your cpp collapses tabs macro expansions into a single space and - * replaces escaped newlines with a space, define this symbol. This will - * cause imake to attempt to patch up the generated Makefile by looking - * for lines that have colons in them (this is why the rules file escapes - * all colons). One way to tell if you need this is to see whether or not - * your Makefiles have no tabs in them and lots of @@ strings. - */ -#if defined(sun) || defined(SYSV) || defined(SVR4) || defined(hcx) || defined(WIN32) || (defined(AMOEBA) && defined(CROSS_COMPILE)) -#define FIXUP_CPP_WHITESPACE -#endif -#ifdef WIN32 -#define REMOVE_CPP_LEADSPACE -#define INLINE_SYNTAX -#define MAGIC_MAKE_VARS -#endif -#ifdef __minix_vmd -#define FIXUP_CPP_WHITESPACE -#endif - -/* - * Step 4: USE_CC_E, DEFAULT_CC, DEFAULT_CPP - * If you want to use cc -E instead of cpp, define USE_CC_E. - * If use cc -E but want a different compiler, define DEFAULT_CC. - * If the cpp you need is not in /lib/cpp, define DEFAULT_CPP. - */ -#ifdef hpux -#define USE_CC_E -#endif -#ifdef WIN32 -#define USE_CC_E -#define DEFAULT_CC "cl" -#endif -#ifdef apollo -#define DEFAULT_CPP "/usr/lib/cpp" -#endif -#if defined(_IBMR2) && !defined(DEFAULT_CPP) -#define DEFAULT_CPP "/usr/lpp/X11/Xamples/util/cpp/cpp" -#endif -#if defined(sun) && defined(SVR4) -#define DEFAULT_CPP "/usr/ccs/lib/cpp" -#endif -#ifdef __bsdi__ -#define DEFAULT_CPP "/usr/bin/cpp" -#endif -#ifdef __uxp__ -#define DEFAULT_CPP "/usr/ccs/lib/cpp" -#endif -#ifdef __sxg__ -#define DEFAULT_CPP "/usr/lib/cpp" -#endif -#ifdef _CRAY -#define DEFAULT_CPP "/lib/pcpp" -#endif -#if defined(__386BSD__) || defined(__NetBSD__) || defined(__FreeBSD__) -#define DEFAULT_CPP "/usr/libexec/cpp" -#endif -#ifdef MACH -#define USE_CC_E -#endif -#ifdef __minix_vmd -#define DEFAULT_CPP "/usr/lib/cpp" -#endif -#if defined(__EMX__) -/* expects cpp in PATH */ -#define DEFAULT_CPP "cpp" -#endif - -/* - * Step 5: cpp_argv - * The following table contains the flags that should be passed - * whenever a Makefile is being generated. If your preprocessor - * doesn't predefine any unique symbols, choose one and add it to the - * end of this table. Then, do the following: - * - * a. Use this symbol in Imake.tmpl when setting MacroFile. - * b. Put this symbol in the definition of BootstrapCFlags in your - * .cf file. - * c. When doing a make World, always add "BOOTSTRAPCFLAGS=-Dsymbol" - * to the end of the command line. - * - * Note that you may define more than one symbol (useful for platforms - * that support multiple operating systems). - */ - -#define ARGUMENTS 50 /* number of arguments in various arrays */ -char *cpp_argv[ARGUMENTS] = { - "cc", /* replaced by the actual program to exec */ - "-I.", /* add current directory to include path */ -#ifdef unix - "-Uunix", /* remove unix symbol so that filename unix.c okay */ -#endif -#if defined(__386BSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(MACH) -# ifdef __i386__ - "-D__i386__", -# endif -# ifdef __GNUC__ - "-traditional", -# endif -#endif -#ifdef M4330 - "-DM4330", /* Tektronix */ -#endif -#ifdef M4310 - "-DM4310", /* Tektronix */ -#endif -#if defined(macII) || defined(_AUX_SOURCE) - "-DmacII", /* Apple A/UX */ -#endif -#ifdef USL - "-DUSL", /* USL */ -#endif -#ifdef sony - "-Dsony", /* Sony */ -#if !defined(SYSTYPE_SYSV) && !defined(_SYSTYPE_SYSV) && NEWSOS < 42 - "-Dbsd43", -#endif -#endif -#ifdef _IBMR2 - "-D_IBMR2", /* IBM RS-6000 (we ensured that aix is defined above */ -#ifndef aix -#define aix /* allow BOOTSTRAPCFLAGS="-D_IBMR2" */ -#endif -#endif /* _IBMR2 */ -#ifdef aix - "-Daix", /* AIX instead of AOS */ -#ifndef ibm -#define ibm /* allow BOOTSTRAPCFLAGS="-Daix" */ -#endif -#endif /* aix */ -#ifdef ibm - "-Dibm", /* IBM PS/2 and RT under both AOS and AIX */ -#endif -#ifdef luna - "-Dluna", /* OMRON luna 68K and 88K */ -#ifdef luna1 - "-Dluna1", -#endif -#ifdef luna88k /* need not on UniOS-Mach Vers. 1.13 */ - "-traditional", /* for some older version */ -#endif /* instead of "-DXCOMM=\\#" */ -#ifdef uniosb - "-Duniosb", -#endif -#ifdef uniosu - "-Duniosu", -#endif -#endif /* luna */ -#ifdef _CRAY /* Cray */ - "-Ucray", -#endif -#ifdef Mips - "-DMips", /* Define and use Mips for Mips Co. OS/mach. */ -# if defined(SYSTYPE_BSD) || defined(BSD) || defined(BSD43) - "-DBSD43", /* Mips RISCOS supports two environments */ -# else - "-DSYSV", /* System V environment is the default */ -# endif -#endif /* Mips */ -#ifdef MOTOROLA - "-DMOTOROLA", /* Motorola Delta Systems */ -# ifdef SYSV - "-DSYSV", -# endif -# ifdef SVR4 - "-DSVR4", -# endif -#endif /* MOTOROLA */ -#ifdef i386 - "-Di386", -# ifdef SVR4 - "-DSVR4", -# endif -# ifdef SYSV - "-DSYSV", -# ifdef ISC - "-DISC", -# ifdef ISC40 - "-DISC40", /* ISC 4.0 */ -# else -# ifdef ISC202 - "-DISC202", /* ISC 2.0.2 */ -# else -# ifdef ISC30 - "-DISC30", /* ISC 3.0 */ -# else - "-DISC22", /* ISC 2.2.1 */ -# endif -# endif -# endif -# endif -# ifdef SCO - "-DSCO", -# ifdef SCO324 - "-DSCO324", -# endif -# endif -# endif -# ifdef ESIX - "-DESIX", -# endif -# ifdef ATT - "-DATT", -# endif -# ifdef DELL - "-DDELL", -# endif -#endif -#ifdef SYSV386 /* System V/386 folks, obsolete */ - "-Di386", -# ifdef SVR4 - "-DSVR4", -# endif -# ifdef ISC - "-DISC", -# ifdef ISC40 - "-DISC40", /* ISC 4.0 */ -# else -# ifdef ISC202 - "-DISC202", /* ISC 2.0.2 */ -# else -# ifdef ISC30 - "-DISC30", /* ISC 3.0 */ -# else - "-DISC22", /* ISC 2.2.1 */ -# endif -# endif -# endif -# endif -# ifdef SCO - "-DSCO", -# ifdef SCO324 - "-DSCO324", -# endif -# endif -# ifdef ESIX - "-DESIX", -# endif -# ifdef ATT - "-DATT", -# endif -# ifdef DELL - "-DDELL", -# endif -#endif -#ifdef __osf__ - "-D__osf__", -# ifdef __mips__ - "-D__mips__", -# endif -# ifdef __alpha - "-D__alpha", -# endif -# ifdef __i386__ - "-D__i386__", -# endif -# ifdef __GNUC__ - "-traditional", -# endif -#endif -#ifdef Oki - "-DOki", -#endif -#ifdef sun -#ifdef SVR4 - "-DSVR4", -#endif -#endif -#ifdef WIN32 - "-DWIN32", - "-nologo", - "-batch", - "-D__STDC__", -#endif -#ifdef NCR - "-DNCR", /* NCR */ -#endif -#ifdef linux - "-traditional", - "-Dlinux", -#endif -#ifdef __uxp__ - "-D__uxp__", -#endif -#ifdef __sxg__ - "-D__sxg__", -#endif -#ifdef nec_ews_svr2 - "-Dnec_ews_svr2", -#endif -#ifdef AMOEBA - "-DAMOEBA", -# ifdef CROSS_COMPILE - "-DCROSS_COMPILE", -# ifdef CROSS_i80386 - "-Di80386", -# endif -# ifdef CROSS_sparc - "-Dsparc", -# endif -# ifdef CROSS_mc68000 - "-Dmc68000", -# endif -# else -# ifdef i80386 - "-Di80386", -# endif -# ifdef sparc - "-Dsparc", -# endif -# ifdef mc68000 - "-Dmc68000", -# endif -# endif -#endif -#ifdef __minix_vmd - "-Dminix", -#endif - -#if defined(__EMX__) - "-traditional", - "-Demxos2", -#endif - -}; -#else /* else MAKEDEPEND */ -/* - * Step 6: predefs - * If your compiler and/or preprocessor define any specific symbols, add - * them to the the following table. The definition of struct symtab is - * in util/makedepend/def.h. - */ -struct symtab predefs[] = { -#ifdef apollo - {"apollo", "1"}, -#endif -#ifdef ibm032 - {"ibm032", "1"}, -#endif -#ifdef ibm - {"ibm", "1"}, -#endif -#ifdef aix - {"aix", "1"}, -#endif -#ifdef sun - {"sun", "1"}, -#endif -#ifdef sun2 - {"sun2", "1"}, -#endif -#ifdef sun3 - {"sun3", "1"}, -#endif -#ifdef sun4 - {"sun4", "1"}, -#endif -#ifdef sparc - {"sparc", "1"}, -#endif -#ifdef __sparc__ - {"__sparc__", "1"}, -#endif -#ifdef hpux - {"hpux", "1"}, -#endif -#ifdef __hpux - {"__hpux", "1"}, -#endif -#ifdef __hp9000s800 - {"__hp9000s800", "1"}, -#endif -#ifdef __hp9000s700 - {"__hp9000s700", "1"}, -#endif -#ifdef vax - {"vax", "1"}, -#endif -#ifdef VMS - {"VMS", "1"}, -#endif -#ifdef cray - {"cray", "1"}, -#endif -#ifdef CRAY - {"CRAY", "1"}, -#endif -#ifdef _CRAY - {"_CRAY", "1"}, -#endif -#ifdef att - {"att", "1"}, -#endif -#ifdef mips - {"mips", "1"}, -#endif -#ifdef __mips__ - {"__mips__", "1"}, -#endif -#ifdef ultrix - {"ultrix", "1"}, -#endif -#ifdef stellar - {"stellar", "1"}, -#endif -#ifdef mc68000 - {"mc68000", "1"}, -#endif -#ifdef mc68020 - {"mc68020", "1"}, -#endif -#ifdef __GNUC__ - {"__GNUC__", "1"}, -#endif -#if __STDC__ - {"__STDC__", "1"}, -#endif -#ifdef __HIGHC__ - {"__HIGHC__", "1"}, -#endif -#ifdef CMU - {"CMU", "1"}, -#endif -#ifdef luna - {"luna", "1"}, -#ifdef luna1 - {"luna1", "1"}, -#endif -#ifdef luna2 - {"luna2", "1"}, -#endif -#ifdef luna88k - {"luna88k", "1"}, -#endif -#ifdef uniosb - {"uniosb", "1"}, -#endif -#ifdef uniosu - {"uniosu", "1"}, -#endif -#endif -#ifdef ieeep754 - {"ieeep754", "1"}, -#endif -#ifdef is68k - {"is68k", "1"}, -#endif -#ifdef m68k - {"m68k", "1"}, -#endif -#ifdef m88k - {"m88k", "1"}, -#endif -#ifdef __m88k__ - {"__m88k__", "1"}, -#endif -#ifdef bsd43 - {"bsd43", "1"}, -#endif -#ifdef hcx - {"hcx", "1"}, -#endif -#ifdef sony - {"sony", "1"}, -#ifdef SYSTYPE_SYSV - {"SYSTYPE_SYSV", "1"}, -#endif -#ifdef _SYSTYPE_SYSV - {"_SYSTYPE_SYSV", "1"}, -#endif -#endif -#ifdef __OSF__ - {"__OSF__", "1"}, -#endif -#ifdef __osf__ - {"__osf__", "1"}, -#endif -#ifdef __alpha - {"__alpha", "1"}, -#endif -#ifdef __DECC - {"__DECC", "1"}, -#endif -#ifdef __decc - {"__decc", "1"}, -#endif -#ifdef __uxp__ - {"__uxp__", "1"}, -#endif -#ifdef __sxg__ - {"__sxg__", "1"}, -#endif -#ifdef _SEQUENT_ - {"_SEQUENT_", "1"}, - {"__STDC__", "1"}, -#endif -#ifdef __bsdi__ - {"__bsdi__", "1"}, -#endif -#ifdef nec_ews_svr2 - {"nec_ews_svr2", "1"}, -#endif -#ifdef nec_ews_svr4 - {"nec_ews_svr4", "1"}, -#endif -#ifdef _nec_ews_svr4 - {"_nec_ews_svr4", "1"}, -#endif -#ifdef _nec_up - {"_nec_up", "1"}, -#endif -#ifdef SX - {"SX", "1"}, -#endif -#ifdef nec - {"nec", "1"}, -#endif -#ifdef _nec_ft - {"_nec_ft", "1"}, -#endif -#ifdef PC_UX - {"PC_UX", "1"}, -#endif -#ifdef sgi - {"sgi", "1"}, -#endif -#ifdef __sgi - {"__sgi", "1"}, -#endif -#ifdef __FreeBSD__ - {"__FreeBSD__", "1"}, -#endif -#ifdef __NetBSD__ - {"__NetBSD__", "1"}, -#endif -#ifdef __EMX__ - {"__EMX__", "1"}, -#endif - /* add any additional symbols before this line */ - {NULL, NULL} -}; - -#endif /* MAKEDEPEND */ -#endif /* CCIMAKE */ diff --git a/ef/config/mkdepend/include.c b/ef/config/mkdepend/include.c index 994233a8868..e69de29bb2d 100644 --- a/ef/config/mkdepend/include.c +++ b/ef/config/mkdepend/include.c @@ -1,308 +0,0 @@ -/* $XConsortium: include.c,v 1.17 94/12/05 19:33:08 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. - -*/ - - -#include "def.h" - -extern struct inclist inclist[ MAXFILES ], - *inclistp; -extern char *includedirs[ ]; -extern char *notdotdot[ ]; -extern boolean show_where_not; -extern boolean warn_multiple; - -struct inclist *inc_path(file, include, dot) - register char *file, - *include; - boolean dot; -{ - static char path[ BUFSIZ ]; - register char **pp, *p; - register struct inclist *ip; - struct stat st; - boolean found = FALSE; - - /* - * Check all previously found include files for a path that - * has already been expanded. - */ - for (ip = inclist; ip->i_file; ip++) - if ((strcmp(ip->i_incstring, include) == 0) && !ip->i_included_sym) - { - found = TRUE; - break; - } - - /* - * If the path was surrounded by "" or is an absolute path, - * then check the exact path provided. - */ - if (!found && (dot || *include == '/')) { - if (stat(include, &st) == 0) { - ip = newinclude(include, include); - found = TRUE; - } - else if (show_where_not) - warning1("\tnot in %s\n", include); - } - - /* - * See if this include file is in the directory of the - * file being compiled. - */ - if (!found) { - for (p=file+strlen(file); p>file; p--) - if (*p == '/') - break; - if (p == file) - strcpy(path, include); - else { - strncpy(path, file, (p-file) + 1); - path[ (p-file) + 1 ] = '\0'; - strcpy(path + (p-file) + 1, include); - } - remove_dotdot(path); - if (stat(path, &st) == 0) { - ip = newinclude(path, include); - found = TRUE; - } - else if (show_where_not) - warning1("\tnot in %s\n", path); - } - - /* - * Check the include directories specified. (standard include dir - * should be at the end.) - */ - if (!found) - for (pp = includedirs; *pp; pp++) { - sprintf(path, "%s/%s", *pp, include); - remove_dotdot(path); - if (stat(path, &st) == 0) { - ip = newinclude(path, include); - found = TRUE; - break; - } - else if (show_where_not) - warning1("\tnot in %s\n", path); - } - - if (!found) - ip = NULL; - return(ip); -} - -/* - * Occasionally, pathnames are created that look like .../x/../y - * Any of the 'x/..' sequences within the name can be eliminated. - * (but only if 'x' is not a symbolic link!!) - */ -void remove_dotdot(path) - char *path; -{ - register char *end, *from, *to, **cp; - char *components[ MAXFILES ], - newpath[ BUFSIZ ]; - boolean component_copied; - - /* - * slice path up into components. - */ - to = newpath; - if (*path == '/') - *to++ = '/'; - *to = '\0'; - cp = components; - for (from=end=path; *end; end++) - if (*end == '/') { - while (*end == '/') - *end++ = '\0'; - if (*from) - *cp++ = from; - from = end; - } - *cp++ = from; - *cp = NULL; - - /* - * Recursively remove all 'x/..' component pairs. - */ - cp = components; - while(*cp) { - if (!isdot(*cp) && !isdotdot(*cp) && isdotdot(*(cp+1)) - && !issymbolic(newpath, *cp)) - { - char **fp = cp + 2; - char **tp = cp; - - do - *tp++ = *fp; /* move all the pointers down */ - while (*fp++); - if (cp != components) - cp--; /* go back and check for nested ".." */ - } else { - cp++; - } - } - /* - * Concatenate the remaining path elements. - */ - cp = components; - component_copied = FALSE; - while(*cp) { - if (component_copied) - *to++ = '/'; - component_copied = TRUE; - for (from = *cp; *from; ) - *to++ = *from++; - *to = '\0'; - cp++; - } - *to++ = '\0'; - - /* - * copy the reconstituted path back to our pointer. - */ - strcpy(path, newpath); -} - -int isdot(p) - register char *p; -{ - if(p && *p++ == '.' && *p++ == '\0') - return(TRUE); - return(FALSE); -} - -int isdotdot(p) - register char *p; -{ - if(p && *p++ == '.' && *p++ == '.' && *p++ == '\0') - return(TRUE); - return(FALSE); -} - -int issymbolic(dir, component) - register char *dir, *component; -{ -#ifdef S_IFLNK - struct stat st; - char buf[ BUFSIZ ], **pp; - - sprintf(buf, "%s%s%s", dir, *dir ? "/" : "", component); - for (pp=notdotdot; *pp; pp++) - if (strcmp(*pp, buf) == 0) - return (TRUE); - if (lstat(buf, &st) == 0 - && (st.st_mode & S_IFMT) == S_IFLNK) { - *pp++ = copy(buf); - if (pp >= ¬dotdot[ MAXDIRS ]) - fatalerr("out of .. dirs, increase MAXDIRS\n"); - return(TRUE); - } -#endif - return(FALSE); -} - -/* - * Add an include file to the list of those included by 'file'. - */ -struct inclist *newinclude(newfile, incstring) - register char *newfile, *incstring; -{ - register struct inclist *ip; - - /* - * First, put this file on the global list of include files. - */ - ip = inclistp++; - if (inclistp == inclist + MAXFILES - 1) - fatalerr("out of space: increase MAXFILES\n"); - ip->i_file = copy(newfile); - ip->i_included_sym = FALSE; - if (incstring == NULL) - ip->i_incstring = ip->i_file; - else - ip->i_incstring = copy(incstring); - - return(ip); -} - -void included_by(ip, newfile) - register struct inclist *ip, *newfile; -{ - register i; - - if (ip == NULL) - return; - /* - * Put this include file (newfile) on the list of files included - * by 'file'. If 'file' is NULL, then it is not an include - * file itself (i.e. was probably mentioned on the command line). - * If it is already on the list, don't stick it on again. - */ - if (ip->i_list == NULL) - ip->i_list = (struct inclist **) - malloc(sizeof(struct inclist *) * ++ip->i_listlen); - else { - for (i=0; ii_listlen; i++) - if (ip->i_list[ i ] == newfile) { - i = strlen(newfile->i_file); - if (!ip->i_included_sym && - !(i > 2 && - newfile->i_file[i-1] == 'c' && - newfile->i_file[i-2] == '.')) - { - /* only bitch if ip has */ - /* no #include SYMBOL lines */ - /* and is not a .c file */ - if (warn_multiple) - { - warning("%s includes %s more than once!\n", - ip->i_file, newfile->i_file); - warning1("Already have\n"); - for (i=0; ii_listlen; i++) - warning1("\t%s\n", ip->i_list[i]->i_file); - } - } - return; - } - ip->i_list = (struct inclist **) realloc(ip->i_list, - sizeof(struct inclist *) * ++ip->i_listlen); - } - ip->i_list[ ip->i_listlen-1 ] = newfile; -} - -void inc_clean () -{ - register struct inclist *ip; - - for (ip = inclist; ip < inclistp; ip++) { - ip->i_marked = FALSE; - } -} diff --git a/ef/config/mkdepend/main.c b/ef/config/mkdepend/main.c index 2f4925c148e..e69de29bb2d 100644 --- a/ef/config/mkdepend/main.c +++ b/ef/config/mkdepend/main.c @@ -1,715 +0,0 @@ -/* $XConsortium: main.c,v 1.84 94/11/30 16:10:44 kaleb Exp $ */ -/* $XFree86: xc/config/makedepend/main.c,v 3.4 1995/07/15 14:53:49 dawes 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. - -*/ - -#include "def.h" -#ifdef hpux -#define sigvec sigvector -#endif /* hpux */ - -#ifdef X_POSIX_C_SOURCE -#define _POSIX_C_SOURCE X_POSIX_C_SOURCE -#include -#undef _POSIX_C_SOURCE -#else -#if defined(X_NOT_POSIX) || defined(_POSIX_SOURCE) -#include -#else -#define _POSIX_SOURCE -#include -#undef _POSIX_SOURCE -#endif -#endif - -#if NeedVarargsPrototypes -#include -#endif - -#ifndef _WIN32 -#include -#endif - -#ifdef MINIX -#define USE_CHMOD 1 -#endif - -#ifdef DEBUG -int _debugmask; -#endif - -char *ProgramName; - -char *directives[] = { - "if", - "ifdef", - "ifndef", - "else", - "endif", - "define", - "undef", - "include", - "line", - "pragma", - "error", - "ident", - "sccs", - "elif", - "eject", - NULL -}; - -#define MAKEDEPEND -#include "imakemdep.h" /* from config sources */ -#undef MAKEDEPEND - -struct inclist inclist[ MAXFILES ], - *inclistp = inclist, - maininclist; - -char *filelist[ MAXFILES ]; -char *includedirs[ MAXDIRS + 1 ]; -char *notdotdot[ MAXDIRS ]; -char *objprefix = ""; -char *objsuffix = OBJSUFFIX; -char *startat = "# DO NOT DELETE"; -int width = 78; -boolean append = FALSE; -boolean printed = FALSE; -boolean verbose = FALSE; -boolean show_where_not = FALSE; -boolean warn_multiple = FALSE; /* Warn on multiple includes of same file */ - -static -#ifdef SIGNALRETURNSINT -int -#else -void -#endif -catch (sig) - int sig; -{ - fflush (stdout); - fatalerr ("got signal %d\n", sig); -} - -#if defined(USG) || (defined(i386) && defined(SYSV)) || defined(WIN32) || defined(__EMX__) || defined(Lynx_22) || defined(FREEBSD) -#define USGISH -#endif - -#ifndef USGISH -#ifndef _POSIX_SOURCE -#define sigaction sigvec -#define sa_handler sv_handler -#define sa_mask sv_mask -#define sa_flags sv_flags -#endif -struct sigaction sig_act; -#endif /* USGISH */ - -int -main(argc, argv) - int argc; - char **argv; -{ - register char **fp = filelist; - register char **incp = includedirs; - register char *p; - register struct inclist *ip; - char *makefile = NULL; - struct filepointer *filecontent; - struct symtab *psymp = predefs; - char *endmarker = NULL; - char *defincdir = NULL; - - ProgramName = argv[0]; - - while (psymp->s_name) - { - define2(psymp->s_name, psymp->s_value, &maininclist); - psymp++; - } - if (argc == 2 && argv[1][0] == '@') { - struct stat ast; - int afd; - char *args; - char **nargv; - int nargc; - char quotechar = '\0'; - - nargc = 1; - if ((afd = open(argv[1]+1, O_RDONLY)) < 0) - fatalerr("cannot open \"%s\"\n", argv[1]+1); - fstat(afd, &ast); - args = (char *)malloc(ast.st_size + 1); - if ((ast.st_size = read(afd, args, ast.st_size)) < 0) - fatalerr("failed to read %s\n", argv[1]+1); - args[ast.st_size] = '\0'; - close(afd); - for (p = args; *p; p++) { - if (quotechar) { - if (quotechar == '\\' || - (*p == quotechar && p[-1] != '\\')) - quotechar = '\0'; - continue; - } - switch (*p) { - case '\\': - case '"': - case '\'': - quotechar = *p; - break; - case ' ': - case '\n': - *p = '\0'; - if (p > args && p[-1]) - nargc++; - break; - } - } - if (p[-1]) - nargc++; - nargv = (char **)malloc(nargc * sizeof(char *)); - nargv[0] = argv[0]; - argc = 1; - for (p = args; argc < nargc; p += strlen(p) + 1) - if (*p) nargv[argc++] = p; - argv = nargv; - } - for(argc--, argv++; argc; argc--, argv++) { - /* if looking for endmarker then check before parsing */ - if (endmarker && strcmp (endmarker, *argv) == 0) { - endmarker = NULL; - continue; - } - if (**argv != '-') { - /* treat +thing as an option for C++ */ - if (endmarker && **argv == '+') - continue; - *fp++ = argv[0]; - continue; - } - switch(argv[0][1]) { - case '-': - endmarker = &argv[0][2]; - if (endmarker[0] == '\0') endmarker = "--"; - break; - case 'D': - if (argv[0][2] == '\0') { - argv++; - argc--; - } - for (p=argv[0] + 2; *p ; p++) - if (*p == '=') { - *p = ' '; - break; - } - define(argv[0] + 2, &maininclist); - break; - case 'I': - if (incp >= includedirs + MAXDIRS) - fatalerr("Too many -I flags.\n"); - *incp++ = argv[0]+2; - if (**(incp-1) == '\0') { - *(incp-1) = *(++argv); - argc--; - } - break; - case 'Y': - defincdir = argv[0]+2; - break; - /* do not use if endmarker processing */ - case 'a': - if (endmarker) break; - append = TRUE; - break; - case 'w': - if (endmarker) break; - if (argv[0][2] == '\0') { - argv++; - argc--; - width = atoi(argv[0]); - } else - width = atoi(argv[0]+2); - break; - case 'o': - if (endmarker) break; - if (argv[0][2] == '\0') { - argv++; - argc--; - objsuffix = argv[0]; - } else - objsuffix = argv[0]+2; - break; - case 'p': - if (endmarker) break; - if (argv[0][2] == '\0') { - argv++; - argc--; - objprefix = argv[0]; - } else - objprefix = argv[0]+2; - break; - case 'v': - if (endmarker) break; - verbose = TRUE; -#ifdef DEBUG - if (argv[0][2]) - _debugmask = atoi(argv[0]+2); -#endif - break; - case 's': - if (endmarker) break; - startat = argv[0]+2; - if (*startat == '\0') { - startat = *(++argv); - argc--; - } - if (*startat != '#') - fatalerr("-s flag's value should start %s\n", - "with '#'."); - break; - case 'f': - if (endmarker) break; - makefile = argv[0]+2; - if (*makefile == '\0') { - makefile = *(++argv); - argc--; - } - break; - - case 'm': - warn_multiple = TRUE; - break; - - /* Ignore -O, -g so we can just pass ${CFLAGS} to - makedepend - */ - case 'O': - case 'g': - break; - default: - if (endmarker) break; - /* fatalerr("unknown opt = %s\n", argv[0]); */ - warning("ignoring option %s\n", argv[0]); - } - } - if (!defincdir) { -#ifdef PREINCDIR - if (incp >= includedirs + MAXDIRS) - fatalerr("Too many -I flags.\n"); - *incp++ = PREINCDIR; -#endif - if (incp >= includedirs + MAXDIRS) - fatalerr("Too many -I flags.\n"); - *incp++ = INCLUDEDIR; -#ifdef POSTINCDIR - if (incp >= includedirs + MAXDIRS) - fatalerr("Too many -I flags.\n"); - *incp++ = POSTINCDIR; -#endif - } else if (*defincdir) { - if (incp >= includedirs + MAXDIRS) - fatalerr("Too many -I flags.\n"); - *incp++ = defincdir; - } - - redirect(startat, makefile); - - /* - * catch signals. - */ -#ifdef USGISH -/* should really reset SIGINT to SIG_IGN if it was. */ -#ifdef SIGHUP - signal (SIGHUP, catch); -#endif - signal (SIGINT, catch); -#ifdef SIGQUIT - signal (SIGQUIT, catch); -#endif - signal (SIGILL, catch); -#ifdef SIGBUS - signal (SIGBUS, catch); -#endif - signal (SIGSEGV, catch); -#ifdef SIGSYS - signal (SIGSYS, catch); -#endif -#else - sig_act.sa_handler = catch; -#ifdef _POSIX_SOURCE - sigemptyset(&sig_act.sa_mask); - sigaddset(&sig_act.sa_mask, SIGINT); - sigaddset(&sig_act.sa_mask, SIGQUIT); -#ifdef SIGBUS - sigaddset(&sig_act.sa_mask, SIGBUS); -#endif - sigaddset(&sig_act.sa_mask, SIGILL); - sigaddset(&sig_act.sa_mask, SIGSEGV); - sigaddset(&sig_act.sa_mask, SIGHUP); - sigaddset(&sig_act.sa_mask, SIGPIPE); -#ifdef SIGSYS - sigaddset(&sig_act.sa_mask, SIGSYS); -#endif -#else - sig_act.sa_mask = ((1<<(SIGINT -1)) - |(1<<(SIGQUIT-1)) -#ifdef SIGBUS - |(1<<(SIGBUS-1)) -#endif - |(1<<(SIGILL-1)) - |(1<<(SIGSEGV-1)) - |(1<<(SIGHUP-1)) - |(1<<(SIGPIPE-1)) -#ifdef SIGSYS - |(1<<(SIGSYS-1)) -#endif - ); -#endif /* _POSIX_SOURCE */ - sig_act.sa_flags = 0; - sigaction(SIGHUP, &sig_act, (struct sigaction *)0); - sigaction(SIGINT, &sig_act, (struct sigaction *)0); - sigaction(SIGQUIT, &sig_act, (struct sigaction *)0); - sigaction(SIGILL, &sig_act, (struct sigaction *)0); -#ifdef SIGBUS - sigaction(SIGBUS, &sig_act, (struct sigaction *)0); -#endif - sigaction(SIGSEGV, &sig_act, (struct sigaction *)0); -#ifdef SIGSYS - sigaction(SIGSYS, &sig_act, (struct sigaction *)0); -#endif -#endif /* USGISH */ - - /* - * now peruse through the list of files. - */ - for(fp=filelist; *fp; fp++) { - filecontent = getfile(*fp); - ip = newinclude(*fp, (char *)NULL); - - find_includes(filecontent, ip, ip, 0, FALSE); - freefile(filecontent); - recursive_pr_include(ip, ip->i_file, base_name(*fp)); - inc_clean(); - } - if (printed) - printf("\n"); - exit(0); -} - -struct filepointer *getfile(file) - char *file; -{ - register int fd; - struct filepointer *content; - struct stat st; - - content = (struct filepointer *)malloc(sizeof(struct filepointer)); - if ((fd = open(file, O_RDONLY)) < 0) { - warning("cannot open \"%s\"\n", file); - content->f_p = content->f_base = content->f_end = (char *)malloc(1); - *content->f_p = '\0'; - return(content); - } - fstat(fd, &st); - content->f_base = (char *)malloc(st.st_size+1); - if (content->f_base == NULL) - fatalerr("cannot allocate mem\n"); - if ((st.st_size = read(fd, content->f_base, st.st_size)) < 0) - fatalerr("failed to read %s\n", file); - close(fd); - content->f_len = st.st_size+1; - content->f_p = content->f_base; - content->f_end = content->f_base + st.st_size; - *content->f_end = '\0'; - content->f_line = 0; - return(content); -} - -void freefile(fp) - struct filepointer *fp; -{ - free(fp->f_base); - free(fp); -} - -char *copy(str) - register char *str; -{ - register char *p = (char *)malloc(strlen(str) + 1); - - strcpy(p, str); - return(p); -} - -int match(str, list) - register char *str, **list; -{ - register int i; - - for (i=0; *list; i++, list++) - if (strcmp(str, *list) == 0) - return(i); - return(-1); -} - -/* - * Get the next line. We only return lines beginning with '#' since that - * is all this program is ever interested in. - */ -char *getline(filep) - register struct filepointer *filep; -{ - register char *p, /* walking pointer */ - *eof, /* end of file pointer */ - *bol; /* beginning of line pointer */ - register lineno; /* line number */ - - p = filep->f_p; - eof = filep->f_end; - if (p >= eof) - return((char *)NULL); - lineno = filep->f_line; - - for(bol = p--; ++p < eof; ) { - if (*p == '/' && *(p+1) == '*') { /* consume comments */ - *p++ = ' ', *p++ = ' '; - while (*p) { - if (*p == '*' && *(p+1) == '/') { - *p++ = ' ', *p = ' '; - break; - } - else if (*p == '\n') - lineno++; - *p++ = ' '; - } - continue; - } -#ifdef WIN32 - else if (*p == '/' && *(p+1) == '/') { /* consume comments */ - *p++ = ' ', *p++ = ' '; - while (*p && *p != '\n') - *p++ = ' '; - lineno++; - continue; - } -#endif - else if (*p == '\\') { - if (*(p+1) == '\n') { - *p = ' '; - *(p+1) = ' '; - lineno++; - } - } - else if (*p == '\n') { - lineno++; - if (*bol == '#') { - register char *cp; - - *p++ = '\0'; - /* punt lines with just # (yacc generated) */ - for (cp = bol+1; - *cp && (*cp == ' ' || *cp == '\t'); cp++); - if (*cp) goto done; - } - bol = p+1; - } - } - if (*bol != '#') - bol = NULL; -done: - filep->f_p = p; - filep->f_line = lineno; - return(bol); -} - -/* - * Strip the file name down to what we want to see in the Makefile. - * It will have objprefix and objsuffix around it. - */ -char *base_name(file) - register char *file; -{ - register char *p; - - file = copy(file); - for(p=file+strlen(file); p>file && *p != '.'; p--) ; - - if (*p == '.') - *p = '\0'; - return(file); -} - -#if defined(USG) && !defined(CRAY) && !defined(SVR4) && !defined(__EMX__) -int rename (from, to) - char *from, *to; -{ - (void) unlink (to); - if (link (from, to) == 0) { - unlink (from); - return 0; - } else { - return -1; - } -} -#endif /* USGISH */ - -void redirect(line, makefile) - char *line, - *makefile; -{ - struct stat st; - FILE *fdin, *fdout; - char backup[ BUFSIZ ], - buf[ BUFSIZ ]; - boolean found = FALSE; - int len; - - /* - * if makefile is "-" then let it pour onto stdout. - */ - if (makefile && *makefile == '-' && *(makefile+1) == '\0') - return; - - /* - * use a default makefile is not specified. - */ - if (!makefile) { - if (stat("Makefile", &st) == 0) - makefile = "Makefile"; - else if (stat("makefile", &st) == 0) - makefile = "makefile"; - else - fatalerr("[mM]akefile is not present\n"); - } - else - stat(makefile, &st); - if ((fdin = fopen(makefile, "r")) == NULL) - fatalerr("cannot open \"%s\"\n", makefile); - sprintf(backup, "%s.bak", makefile); - unlink(backup); -#if defined(WIN32) || defined(__EMX__) - fclose(fdin); - - /* Remove backup file if it already exists */ - _unlink(backup); -#endif - - if (rename(makefile, backup) < 0) - fatalerr("cannot rename %s to %s\n", makefile, backup); - -#if defined(WIN32) || defined(__EMX__) - if ((fdin = fopen(backup, "r")) == NULL) - fatalerr("cannot open \"%s\"\n", backup); -#endif - if ((fdout = freopen(makefile, "w", stdout)) == NULL) - fatalerr("cannot open \"%s\"\n", makefile); - len = strlen(line); - while (!found && fgets(buf, BUFSIZ, fdin)) { - if (*buf == '#' && strncmp(line, buf, len) == 0) - found = TRUE; - fputs(buf, fdout); - } - if (!found) { - if (verbose) - warning("Adding new delimiting line \"%s\" and dependencies...\n", - line); - puts(line); /* same as fputs(fdout); but with newline */ - } else if (append) { - while (fgets(buf, BUFSIZ, fdin)) { - fputs(buf, fdout); - } - } - fflush(fdout); -#if defined(USGISH) || defined(_SEQUENT_) || defined(USE_CHMOD) - chmod(makefile, st.st_mode); -#else - fchmod(fileno(fdout), st.st_mode); -#endif /* USGISH */ -} - -#if NeedVarargsPrototypes -void fatalerr(char *msg, ...) -#else -/*VARARGS*/ -void fatalerr(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) - char *msg; -#endif -{ -#if NeedVarargsPrototypes - va_list args; -#endif - fprintf(stderr, "%s: error: ", ProgramName); -#if NeedVarargsPrototypes - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); -#else - fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); -#endif - exit (1); -} - -#if NeedVarargsPrototypes -void warning(char *msg, ...) -#else -/*VARARGS0*/ -void warning(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) - char *msg; -#endif -{ -#if NeedVarargsPrototypes - va_list args; -#endif - fprintf(stderr, "%s: warning: ", ProgramName); -#if NeedVarargsPrototypes - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); -#else - fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); -#endif -} - -#if NeedVarargsPrototypes -void warning1(char *msg, ...) -#else -/*VARARGS0*/ -void warning1(msg,x1,x2,x3,x4,x5,x6,x7,x8,x9) - char *msg; -#endif -{ -#if NeedVarargsPrototypes - va_list args; - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); -#else - fprintf(stderr, msg,x1,x2,x3,x4,x5,x6,x7,x8,x9); -#endif -} diff --git a/ef/config/mkdepend/parse.c b/ef/config/mkdepend/parse.c index 1c34a87bb3f..e69de29bb2d 100644 --- a/ef/config/mkdepend/parse.c +++ b/ef/config/mkdepend/parse.c @@ -1,567 +0,0 @@ -/* $XConsortium: parse.c,v 1.30 94/04/17 20:10:38 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. - -*/ - -#include "def.h" - -extern char *directives[]; -extern struct inclist maininclist; - -int find_includes(filep, file, file_red, recursion, failOK) - struct filepointer *filep; - struct inclist *file, *file_red; - int recursion; - boolean failOK; -{ - register char *line; - register int type; - boolean recfailOK; - - while ((line = getline(filep))) { - switch(type = deftype(line, filep, file_red, file, TRUE)) { - case IF: - doif: - type = find_includes(filep, file, - file_red, recursion+1, failOK); - while ((type == ELIF) || (type == ELIFFALSE) || - (type == ELIFGUESSFALSE)) - type = gobble(filep, file, file_red); - if (type == ELSE) - gobble(filep, file, file_red); - break; - case IFFALSE: - case IFGUESSFALSE: - doiffalse: - if (type == IFGUESSFALSE || type == ELIFGUESSFALSE) - recfailOK = TRUE; - else - recfailOK = failOK; - type = gobble(filep, file, file_red); - if (type == ELSE) - find_includes(filep, file, - file_red, recursion+1, recfailOK); - else - if (type == ELIF) - goto doif; - else - if ((type == ELIFFALSE) || (type == ELIFGUESSFALSE)) - goto doiffalse; - break; - case IFDEF: - case IFNDEF: - if ((type == IFDEF && isdefined(line, file_red, NULL)) - || (type == IFNDEF && !isdefined(line, file_red, NULL))) { - debug(1,(type == IFNDEF ? - "line %d: %s !def'd in %s via %s%s\n" : "", - filep->f_line, line, - file->i_file, file_red->i_file, ": doit")); - type = find_includes(filep, file, - file_red, recursion+1, failOK); - while (type == ELIF || type == ELIFFALSE || type == ELIFGUESSFALSE) - type = gobble(filep, file, file_red); - if (type == ELSE) - gobble(filep, file, file_red); - } - else { - debug(1,(type == IFDEF ? - "line %d: %s !def'd in %s via %s%s\n" : "", - filep->f_line, line, - file->i_file, file_red->i_file, ": gobble")); - type = gobble(filep, file, file_red); - if (type == ELSE) - find_includes(filep, file, - file_red, recursion+1, failOK); - else if (type == ELIF) - goto doif; - else if (type == ELIFFALSE || type == ELIFGUESSFALSE) - goto doiffalse; - } - break; - case ELSE: - case ELIFFALSE: - case ELIFGUESSFALSE: - case ELIF: - if (!recursion) - gobble(filep, file, file_red); - case ENDIF: - if (recursion) - return(type); - case DEFINE: - define(line, file); - break; - case UNDEF: - if (!*line) { - warning("%s, line %d: incomplete undef == \"%s\"\n", - file_red->i_file, filep->f_line, line); - break; - } - undefine(line, file_red); - break; - case INCLUDE: - add_include(filep, file, file_red, line, FALSE, failOK); - break; - case INCLUDEDOT: - add_include(filep, file, file_red, line, TRUE, failOK); - break; - case ERROR: - warning("%s: %d: %s\n", file_red->i_file, - filep->f_line, line); - break; - - case PRAGMA: - case IDENT: - case SCCS: - case EJECT: - break; - case -1: - warning("%s", file_red->i_file); - if (file_red != file) - warning1(" (reading %s)", file->i_file); - warning1(", line %d: unknown directive == \"%s\"\n", - filep->f_line, line); - break; - case -2: - warning("%s", file_red->i_file); - if (file_red != file) - warning1(" (reading %s)", file->i_file); - warning1(", line %d: incomplete include == \"%s\"\n", - filep->f_line, line); - break; - } - } - return(-1); -} - -int gobble(filep, file, file_red) - register struct filepointer *filep; - struct inclist *file, *file_red; -{ - register char *line; - register int type; - - while ((line = getline(filep))) { - switch(type = deftype(line, filep, file_red, file, FALSE)) { - case IF: - case IFFALSE: - case IFGUESSFALSE: - case IFDEF: - case IFNDEF: - type = gobble(filep, file, file_red); - while ((type == ELIF) || (type == ELIFFALSE) || - (type == ELIFGUESSFALSE)) - type = gobble(filep, file, file_red); - if (type == ELSE) - (void)gobble(filep, file, file_red); - break; - case ELSE: - case ENDIF: - debug(0,("%s, line %d: #%s\n", - file->i_file, filep->f_line, - directives[type])); - return(type); - case DEFINE: - case UNDEF: - case INCLUDE: - case INCLUDEDOT: - case PRAGMA: - case ERROR: - case IDENT: - case SCCS: - case EJECT: - break; - case ELIF: - case ELIFFALSE: - case ELIFGUESSFALSE: - return(type); - case -1: - warning("%s, line %d: unknown directive == \"%s\"\n", - file_red->i_file, filep->f_line, line); - break; - } - } - return(-1); -} - -/* - * Decide what type of # directive this line is. - */ -int deftype (line, filep, file_red, file, parse_it) - register char *line; - register struct filepointer *filep; - register struct inclist *file_red, *file; - int parse_it; -{ - register char *p; - char *directive, savechar; - register int ret; - - /* - * Parse the directive... - */ - directive=line+1; - while (*directive == ' ' || *directive == '\t') - directive++; - - p = directive; - while (*p >= 'a' && *p <= 'z') - p++; - savechar = *p; - *p = '\0'; - ret = match(directive, directives); - *p = savechar; - - /* If we don't recognize this compiler directive or we happen to just - * be gobbling up text while waiting for an #endif or #elif or #else - * in the case of an #elif we must check the zero_value and return an - * ELIF or an ELIFFALSE. - */ - - if (ret == ELIF && !parse_it) - { - while (*p == ' ' || *p == '\t') - p++; - /* - * parse an expression. - */ - debug(0,("%s, line %d: #elif %s ", - file->i_file, filep->f_line, p)); - ret = zero_value(p, filep, file_red); - if (ret != IF) - { - debug(0,("false...\n")); - if (ret == IFFALSE) - return(ELIFFALSE); - else - return(ELIFGUESSFALSE); - } - else - { - debug(0,("true...\n")); - return(ELIF); - } - } - - if (ret < 0 || ! parse_it) - return(ret); - - /* - * now decide how to parse the directive, and do it. - */ - while (*p == ' ' || *p == '\t') - p++; - switch (ret) { - case IF: - /* - * parse an expression. - */ - ret = zero_value(p, filep, file_red); - debug(0,("%s, line %d: %s #if %s\n", - file->i_file, filep->f_line, ret?"false":"true", p)); - break; - case IFDEF: - case IFNDEF: - debug(0,("%s, line %d: #%s %s\n", - file->i_file, filep->f_line, directives[ret], p)); - case UNDEF: - /* - * separate the name of a single symbol. - */ - while (isalnum(*p) || *p == '_') - *line++ = *p++; - *line = '\0'; - break; - case INCLUDE: - debug(2,("%s, line %d: #include %s\n", - file->i_file, filep->f_line, p)); - - /* Support ANSI macro substitution */ - { - struct symtab *sym = isdefined(p, file_red, NULL); - while (sym) { - p = sym->s_value; - debug(3,("%s : #includes SYMBOL %s = %s\n", - file->i_incstring, - sym -> s_name, - sym -> s_value)); - /* mark file as having included a 'soft include' */ - file->i_included_sym = TRUE; - sym = isdefined(p, file_red, NULL); - } - } - - /* - * Separate the name of the include file. - */ - while (*p && *p != '"' && *p != '<') - p++; - if (! *p) - return(-2); - if (*p++ == '"') { - ret = INCLUDEDOT; - while (*p && *p != '"') - *line++ = *p++; - } else - while (*p && *p != '>') - *line++ = *p++; - *line = '\0'; - break; - case DEFINE: - /* - * copy the definition back to the beginning of the line. - */ - strcpy (line, p); - break; - case ELSE: - case ENDIF: - case ELIF: - case PRAGMA: - case ERROR: - case IDENT: - case SCCS: - case EJECT: - debug(0,("%s, line %d: #%s\n", - file->i_file, filep->f_line, directives[ret])); - /* - * nothing to do. - */ - break; - } - return(ret); -} - -struct symtab *isdefined(symbol, file, srcfile) - register char *symbol; - struct inclist *file; - struct inclist **srcfile; -{ - register struct symtab *val; - - if ((val = slookup(symbol, &maininclist))) { - debug(1,("%s defined on command line\n", symbol)); - if (srcfile != NULL) *srcfile = &maininclist; - return(val); - } - if ((val = fdefined(symbol, file, srcfile))) - return(val); - debug(1,("%s not defined in %s\n", symbol, file->i_file)); - return(NULL); -} - -struct symtab *fdefined(symbol, file, srcfile) - register char *symbol; - struct inclist *file; - struct inclist **srcfile; -{ - register struct inclist **ip; - register struct symtab *val; - register int i; - static int recurse_lvl = 0; - - if (file->i_defchecked) - return(NULL); - file->i_defchecked = TRUE; - if ((val = slookup(symbol, file))) - debug(1,("%s defined in %s as %s\n", symbol, file->i_file, val->s_value)); - if ((val == NULL && file->i_list)) - { - for (ip = file->i_list, i=0; i < file->i_listlen; i++, ip++) - if ((val = fdefined(symbol, *ip, srcfile))) { - break; - } - } - else if (val != NULL && srcfile != NULL) *srcfile = file; - recurse_lvl--; - file->i_defchecked = FALSE; - - return(val); -} - -/* - * Return type based on if the #if expression evaluates to 0 - */ -int zero_value(exp, filep, file_red) - register char *exp; - register struct filepointer *filep; - register struct inclist *file_red; -{ - if (cppsetup(exp, filep, file_red)) - return(IFFALSE); - else - return(IF); -} - -void define(def, file) - char *def; - struct inclist *file; -{ - char *val; - - /* Separate symbol name and its value */ - val = def; - while (isalnum(*val) || *val == '_') - val++; - if (*val) - *val++ = '\0'; - while (*val == ' ' || *val == '\t') - val++; - - if (!*val) - val = "1"; - define2(def, val, file); -} - -void define2(name, val, file) - char *name, *val; - struct inclist *file; -{ - int first, last, below; - register struct symtab *sp = NULL, *dest; - - /* Make space if it's needed */ - if (file->i_defs == NULL) - { - file->i_defs = (struct symtab *) - malloc(sizeof (struct symtab) * SYMTABINC); - file->i_deflen = SYMTABINC; - file->i_ndefs = 0; - } - else if (file->i_ndefs == file->i_deflen) - file->i_defs = (struct symtab *) - realloc(file->i_defs, - sizeof(struct symtab)*(file->i_deflen+=SYMTABINC)); - - if (file->i_defs == NULL) - fatalerr("malloc()/realloc() failure in insert_defn()\n"); - - below = first = 0; - last = file->i_ndefs - 1; - while (last >= first) - { - /* Fast inline binary search */ - register char *s1; - register char *s2; - register int middle = (first + last) / 2; - - /* Fast inline strchr() */ - s1 = name; - s2 = file->i_defs[middle].s_name; - while (*s1++ == *s2++) - if (s2[-1] == '\0') break; - - /* If exact match, set sp and break */ - if (*--s1 == *--s2) - { - sp = file->i_defs + middle; - break; - } - - /* If name > i_defs[middle] ... */ - if (*s1 > *s2) - { - below = first; - first = middle + 1; - } - /* else ... */ - else - { - below = last = middle - 1; - } - } - - /* Search is done. If we found an exact match to the symbol name, - just replace its s_value */ - if (sp != NULL) - { - free(sp->s_value); - sp->s_value = copy(val); - return; - } - - sp = file->i_defs + file->i_ndefs++; - dest = file->i_defs + below + 1; - while (sp > dest) - { - *sp = sp[-1]; - sp--; - } - sp->s_name = copy(name); - sp->s_value = copy(val); -} - -struct symtab *slookup(symbol, file) - register char *symbol; - register struct inclist *file; -{ - register int first = 0; - register int last = file->i_ndefs - 1; - - if (file) while (last >= first) - { - /* Fast inline binary search */ - register char *s1; - register char *s2; - register int middle = (first + last) / 2; - - /* Fast inline strchr() */ - s1 = symbol; - s2 = file->i_defs[middle].s_name; - while (*s1++ == *s2++) - if (s2[-1] == '\0') break; - - /* If exact match, we're done */ - if (*--s1 == *--s2) - { - return file->i_defs + middle; - } - - /* If symbol > i_defs[middle] ... */ - if (*s1 > *s2) - { - first = middle + 1; - } - /* else ... */ - else - { - last = middle - 1; - } - } - return(NULL); -} - -void undefine(symbol, file) - char *symbol; - register struct inclist *file; -{ - register struct symtab *ptr; - struct inclist *srcfile; - while ((ptr = isdefined(symbol, file, &srcfile)) != NULL) - { - srcfile->i_ndefs--; - for (; ptr < srcfile->i_defs + srcfile->i_ndefs; ptr++) - *ptr = ptr[1]; - } -} diff --git a/ef/config/mkdepend/pr.c b/ef/config/mkdepend/pr.c index e1b8224b15f..e69de29bb2d 100644 --- a/ef/config/mkdepend/pr.c +++ b/ef/config/mkdepend/pr.c @@ -1,132 +0,0 @@ -/* $XConsortium: pr.c,v 1.17 94/04/17 20:10:38 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. - -*/ - -#include "def.h" - -extern struct inclist inclist[ MAXFILES ], - *inclistp; -extern char *objprefix; -extern char *objsuffix; -extern int width; -extern boolean printed; -extern boolean verbose; -extern boolean show_where_not; - -void add_include(filep, file, file_red, include, dot, failOK) - struct filepointer *filep; - struct inclist *file, *file_red; - char *include; - boolean dot; -{ - register struct inclist *newfile; - register struct filepointer *content; - - /* - * First decide what the pathname of this include file really is. - */ - newfile = inc_path(file->i_file, include, dot); - if (newfile == NULL) { - if (failOK) - return; - if (file != file_red) - warning("%s (reading %s, line %d): ", - file_red->i_file, file->i_file, filep->f_line); - else - warning("%s, line %d: ", file->i_file, filep->f_line); - warning1("cannot find include file \"%s\"\n", include); - show_where_not = TRUE; - newfile = inc_path(file->i_file, include, dot); - show_where_not = FALSE; - } - - if (newfile) { - - /* Only add new dependency files if they don't have "/usr/include" in them. */ - if (!(newfile && newfile->i_file && strstr(newfile->i_file, "/usr/"))) { - included_by(file, newfile); - } - - if (!newfile->i_searched) { - newfile->i_searched = TRUE; - content = getfile(newfile->i_file); - find_includes(content, newfile, file_red, 0, failOK); - freefile(content); - } - } -} - -void recursive_pr_include(head, file, base) - register struct inclist *head; - register char *file, *base; -{ - register int i; - - if (head->i_marked) - return; - head->i_marked = TRUE; - if (head->i_file != file) - pr(head, file, base); - for (i=0; ii_listlen; i++) - recursive_pr_include(head->i_list[ i ], file, base); -} - -void pr(ip, file, base) - register struct inclist *ip; - char *file, *base; -{ - static char *lastfile; - static int current_len; - register int len, i; - char buf[ BUFSIZ ]; - - printed = TRUE; - len = strlen(ip->i_file)+1; - if (current_len + len > width || file != lastfile) { - lastfile = file; - sprintf(buf, "\n%s%s%s: %s", objprefix, base, objsuffix, - ip->i_file); - len = current_len = strlen(buf); - } - else { - buf[0] = ' '; - strcpy(buf+1, ip->i_file); - current_len += len; - } - fwrite(buf, len, 1, stdout); - - /* - * If verbose is set, then print out what this file includes. - */ - if (! verbose || ip->i_list == NULL || ip->i_notified) - return; - ip->i_notified = TRUE; - lastfile = NULL; - printf("\n# %s includes:", ip->i_file); - for (i=0; ii_listlen; i++) - printf("\n#\t%s", ip->i_list[ i ]->i_incstring); -}