From: ceriel Date: Mon, 11 May 1987 14:08:58 +0000 (+0000) Subject: removed the limitation on number of include directories X-Git-Tag: release-5-5~4170 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=b6e994767c13902a92dc3b4a5b9a3f3b905605a0;p=ack.git removed the limitation on number of include directories --- diff --git a/lang/cem/cemcom/BigPars b/lang/cem/cemcom/BigPars index 4b4c7af24..6df5e2d82 100644 --- a/lang/cem/cemcom/BigPars +++ b/lang/cem/cemcom/BigPars @@ -24,10 +24,6 @@ #define IFDEPTH 256 /* maximum number of nested if-constructions */ -!File: maxincl.h -#define MAXINCL 12 /* maximum number of #include directories */ - - !File: density.h #define DENSITY 2 /* see switch.[ch] for an explanation */ diff --git a/lang/cem/cemcom/Makefile b/lang/cem/cemcom/Makefile index 44f053d75..6579e9c03 100644 --- a/lang/cem/cemcom/Makefile +++ b/lang/cem/cemcom/Makefile @@ -39,7 +39,7 @@ COPTIONS = # What parser generator to use and how GEN = $(EMHOME)/bin/LLgen -GENOPTIONS = +GENOPTIONS = -v # Special #defines during compilation CDEFS = $(EM_INCLUDES) $(LIB_INCLUDES) @@ -85,7 +85,7 @@ GSRC = $(GCSRC) $(GHSTRSRC) # .h files generated by `make hfiles LLfiles'; PLEASE KEEP THIS UP-TO-DATE! GHSRC = botch_free.h dataflow.h debug.h density.h errout.h \ idfsize.h ifdepth.h inputtype.h lapbuf.h \ - maxincl.h nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \ + nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \ nparams.h numsize.h parbufsize.h pathlength.h Lpars.h \ strsize.h target_sizes.h textsize.h use_tmp.h spec_arith.h static.h @@ -218,7 +218,6 @@ main.o: idf.h main.o: input.h main.o: inputtype.h main.o: level.h -main.o: maxincl.h main.o: noRoption.h main.o: nobitfield.h main.o: nocross.h @@ -549,7 +548,6 @@ options.o: dataflow.h options.o: idf.h options.o: idfsize.h options.o: macro.h -options.o: maxincl.h options.o: noRoption.h options.o: nobitfield.h options.o: nocross.h diff --git a/lang/cem/cemcom/Makefile.erik b/lang/cem/cemcom/Makefile.erik index 7806b2d9f..8a330e06a 100644 --- a/lang/cem/cemcom/Makefile.erik +++ b/lang/cem/cemcom/Makefile.erik @@ -85,7 +85,7 @@ GSRC = char.c symbol2str.c next.c \ # .h files generated by `make hfiles'; PLEASE KEEP THIS UP-TO-DATE! GHSRC = botch_free.h dataflow.h debug.h density.h errout.h \ idfsize.h ifdepth.h inputtype.h inumlength.h lapbuf.h \ - maxincl.h nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \ + nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \ nparams.h numsize.h parbufsize.h pathlength.h \ strsize.h target_sizes.h textsize.h use_tmp.h spec_arith.h static.h @@ -217,583 +217,3 @@ sim: cfiles $(SIM) $(SIMFLAGS) `sources $(COBJ)` $(GSRC) $(LSRC) #AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO -main.o: LLlex.h -main.o: Lpars.h -main.o: align.h -main.o: arith.h -main.o: debug.h -main.o: declar.h -main.o: file_info.h -main.o: idf.h -main.o: input.h -main.o: inputtype.h -main.o: level.h -main.o: maxincl.h -main.o: noRoption.h -main.o: nobitfield.h -main.o: nocross.h -main.o: nofloat.h -main.o: nopp.h -main.o: sizes.h -main.o: spec_arith.h -main.o: specials.h -main.o: target_sizes.h -main.o: tokenname.h -main.o: type.h -main.o: use_tmp.h -idf.o: LLlex.h -idf.o: Lpars.h -idf.o: align.h -idf.o: arith.h -idf.o: assert.h -idf.o: botch_free.h -idf.o: debug.h -idf.o: declar.h -idf.o: decspecs.h -idf.o: def.h -idf.o: file_info.h -idf.o: idf.h -idf.o: idfsize.h -idf.o: label.h -idf.o: level.h -idf.o: noRoption.h -idf.o: nobitfield.h -idf.o: nocross.h -idf.o: nofloat.h -idf.o: nopp.h -idf.o: sizes.h -idf.o: spec_arith.h -idf.o: specials.h -idf.o: stack.h -idf.o: struct.h -idf.o: target_sizes.h -idf.o: type.h -declarator.o: Lpars.h -declarator.o: arith.h -declarator.o: botch_free.h -declarator.o: declar.h -declarator.o: expr.h -declarator.o: idf.h -declarator.o: label.h -declarator.o: nobitfield.h -declarator.o: nocross.h -declarator.o: nofloat.h -declarator.o: nopp.h -declarator.o: sizes.h -declarator.o: spec_arith.h -declarator.o: target_sizes.h -declarator.o: type.h -decspecs.o: Lpars.h -decspecs.o: arith.h -decspecs.o: decspecs.h -decspecs.o: def.h -decspecs.o: level.h -decspecs.o: noRoption.h -decspecs.o: nobitfield.h -decspecs.o: nofloat.h -decspecs.o: spec_arith.h -decspecs.o: type.h -struct.o: LLlex.h -struct.o: Lpars.h -struct.o: align.h -struct.o: arith.h -struct.o: assert.h -struct.o: botch_free.h -struct.o: debug.h -struct.o: def.h -struct.o: field.h -struct.o: file_info.h -struct.o: idf.h -struct.o: level.h -struct.o: noRoption.h -struct.o: nobitfield.h -struct.o: nocross.h -struct.o: nofloat.h -struct.o: nopp.h -struct.o: sizes.h -struct.o: spec_arith.h -struct.o: stack.h -struct.o: struct.h -struct.o: target_sizes.h -struct.o: type.h -expr.o: LLlex.h -expr.o: Lpars.h -expr.o: arith.h -expr.o: botch_free.h -expr.o: declar.h -expr.o: decspecs.h -expr.o: def.h -expr.o: expr.h -expr.o: file_info.h -expr.o: idf.h -expr.o: label.h -expr.o: level.h -expr.o: noRoption.h -expr.o: nobitfield.h -expr.o: nocross.h -expr.o: nofloat.h -expr.o: nopp.h -expr.o: sizes.h -expr.o: spec_arith.h -expr.o: target_sizes.h -expr.o: type.h -ch7.o: Lpars.h -ch7.o: arith.h -ch7.o: assert.h -ch7.o: debug.h -ch7.o: def.h -ch7.o: expr.h -ch7.o: idf.h -ch7.o: label.h -ch7.o: nobitfield.h -ch7.o: nofloat.h -ch7.o: nopp.h -ch7.o: spec_arith.h -ch7.o: struct.h -ch7.o: type.h -ch7bin.o: Lpars.h -ch7bin.o: arith.h -ch7bin.o: botch_free.h -ch7bin.o: expr.h -ch7bin.o: idf.h -ch7bin.o: label.h -ch7bin.o: noRoption.h -ch7bin.o: nobitfield.h -ch7bin.o: nofloat.h -ch7bin.o: nopp.h -ch7bin.o: spec_arith.h -ch7bin.o: struct.h -ch7bin.o: type.h -cstoper.o: Lpars.h -cstoper.o: arith.h -cstoper.o: assert.h -cstoper.o: debug.h -cstoper.o: expr.h -cstoper.o: idf.h -cstoper.o: label.h -cstoper.o: nobitfield.h -cstoper.o: nocross.h -cstoper.o: nofloat.h -cstoper.o: nopp.h -cstoper.o: sizes.h -cstoper.o: spec_arith.h -cstoper.o: target_sizes.h -cstoper.o: type.h -arith.o: Lpars.h -arith.o: arith.h -arith.o: botch_free.h -arith.o: expr.h -arith.o: field.h -arith.o: idf.h -arith.o: label.h -arith.o: mes.h -arith.o: noRoption.h -arith.o: nobitfield.h -arith.o: nofloat.h -arith.o: nopp.h -arith.o: spec_arith.h -arith.o: type.h -code.o: LLlex.h -code.o: Lpars.h -code.o: align.h -code.o: arith.h -code.o: assert.h -code.o: atw.h -code.o: botch_free.h -code.o: code.h -code.o: dataflow.h -code.o: debug.h -code.o: declar.h -code.o: decspecs.h -code.o: def.h -code.o: expr.h -code.o: file_info.h -code.o: idf.h -code.o: label.h -code.o: level.h -code.o: mes.h -code.o: noRoption.h -code.o: nobitfield.h -code.o: nocross.h -code.o: nofloat.h -code.o: nopp.h -code.o: sizes.h -code.o: spec_arith.h -code.o: specials.h -code.o: stack.h -code.o: stmt.h -code.o: target_sizes.h -code.o: type.h -code.o: use_tmp.h -dumpidf.o: Lpars.h -dumpidf.o: arith.h -dumpidf.o: debug.h -dumpidf.o: def.h -dumpidf.o: expr.h -dumpidf.o: field.h -dumpidf.o: idf.h -dumpidf.o: label.h -dumpidf.o: nobitfield.h -dumpidf.o: nofloat.h -dumpidf.o: nopp.h -dumpidf.o: spec_arith.h -dumpidf.o: stack.h -dumpidf.o: static.h -dumpidf.o: struct.h -dumpidf.o: type.h -error.o: LLlex.h -error.o: arith.h -error.o: debug.h -error.o: errout.h -error.o: expr.h -error.o: file_info.h -error.o: label.h -error.o: nofloat.h -error.o: nopp.h -error.o: spec_arith.h -error.o: tokenname.h -error.o: use_tmp.h -field.o: Lpars.h -field.o: arith.h -field.o: assert.h -field.o: code.h -field.o: debug.h -field.o: expr.h -field.o: field.h -field.o: idf.h -field.o: label.h -field.o: nobitfield.h -field.o: nocross.h -field.o: nofloat.h -field.o: nopp.h -field.o: sizes.h -field.o: spec_arith.h -field.o: target_sizes.h -field.o: type.h -tokenname.o: LLlex.h -tokenname.o: Lpars.h -tokenname.o: arith.h -tokenname.o: file_info.h -tokenname.o: idf.h -tokenname.o: nofloat.h -tokenname.o: nopp.h -tokenname.o: spec_arith.h -tokenname.o: tokenname.h -LLlex.o: LLlex.h -LLlex.o: Lpars.h -LLlex.o: arith.h -LLlex.o: assert.h -LLlex.o: class.h -LLlex.o: debug.h -LLlex.o: def.h -LLlex.o: file_info.h -LLlex.o: idf.h -LLlex.o: idfsize.h -LLlex.o: input.h -LLlex.o: nocross.h -LLlex.o: nofloat.h -LLlex.o: nopp.h -LLlex.o: numsize.h -LLlex.o: sizes.h -LLlex.o: spec_arith.h -LLlex.o: strsize.h -LLlex.o: target_sizes.h -LLmessage.o: LLlex.h -LLmessage.o: Lpars.h -LLmessage.o: arith.h -LLmessage.o: file_info.h -LLmessage.o: idf.h -LLmessage.o: nofloat.h -LLmessage.o: nopp.h -LLmessage.o: spec_arith.h -input.o: file_info.h -input.o: input.h -input.o: inputtype.h -input.o: nopp.h -domacro.o: LLlex.h -domacro.o: Lpars.h -domacro.o: arith.h -domacro.o: assert.h -domacro.o: botch_free.h -domacro.o: class.h -domacro.o: debug.h -domacro.o: file_info.h -domacro.o: idf.h -domacro.o: idfsize.h -domacro.o: ifdepth.h -domacro.o: input.h -domacro.o: interface.h -domacro.o: macro.h -domacro.o: nofloat.h -domacro.o: nopp.h -domacro.o: nparams.h -domacro.o: parbufsize.h -domacro.o: spec_arith.h -domacro.o: textsize.h -replace.o: LLlex.h -replace.o: arith.h -replace.o: assert.h -replace.o: class.h -replace.o: debug.h -replace.o: file_info.h -replace.o: idf.h -replace.o: input.h -replace.o: interface.h -replace.o: macro.h -replace.o: nofloat.h -replace.o: nopp.h -replace.o: pathlength.h -replace.o: spec_arith.h -replace.o: static.h -replace.o: strsize.h -init.o: class.h -init.o: idf.h -init.o: interface.h -init.o: macro.h -init.o: nopp.h -options.o: align.h -options.o: arith.h -options.o: botch_free.h -options.o: class.h -options.o: dataflow.h -options.o: idf.h -options.o: idfsize.h -options.o: macro.h -options.o: maxincl.h -options.o: noRoption.h -options.o: nobitfield.h -options.o: nocross.h -options.o: nofloat.h -options.o: nopp.h -options.o: sizes.h -options.o: spec_arith.h -options.o: target_sizes.h -options.o: use_tmp.h -scan.o: class.h -scan.o: idf.h -scan.o: input.h -scan.o: interface.h -scan.o: lapbuf.h -scan.o: macro.h -scan.o: nopp.h -scan.o: nparams.h -skip.o: LLlex.h -skip.o: arith.h -skip.o: class.h -skip.o: file_info.h -skip.o: input.h -skip.o: interface.h -skip.o: nofloat.h -skip.o: nopp.h -skip.o: spec_arith.h -stack.o: Lpars.h -stack.o: arith.h -stack.o: botch_free.h -stack.o: debug.h -stack.o: def.h -stack.o: idf.h -stack.o: level.h -stack.o: mes.h -stack.o: noRoption.h -stack.o: nobitfield.h -stack.o: nofloat.h -stack.o: nopp.h -stack.o: spec_arith.h -stack.o: stack.h -stack.o: struct.h -stack.o: type.h -type.o: Lpars.h -type.o: align.h -type.o: arith.h -type.o: botch_free.h -type.o: def.h -type.o: idf.h -type.o: nobitfield.h -type.o: nocross.h -type.o: nofloat.h -type.o: nopp.h -type.o: sizes.h -type.o: spec_arith.h -type.o: target_sizes.h -type.o: type.h -ch7mon.o: Lpars.h -ch7mon.o: arith.h -ch7mon.o: botch_free.h -ch7mon.o: def.h -ch7mon.o: expr.h -ch7mon.o: idf.h -ch7mon.o: label.h -ch7mon.o: nobitfield.h -ch7mon.o: nofloat.h -ch7mon.o: nopp.h -ch7mon.o: spec_arith.h -ch7mon.o: type.h -label.o: Lpars.h -label.o: arith.h -label.o: def.h -label.o: idf.h -label.o: label.h -label.o: level.h -label.o: noRoption.h -label.o: nobitfield.h -label.o: nofloat.h -label.o: nopp.h -label.o: spec_arith.h -label.o: type.h -eval.o: Lpars.h -eval.o: align.h -eval.o: arith.h -eval.o: assert.h -eval.o: atw.h -eval.o: code.h -eval.o: dataflow.h -eval.o: debug.h -eval.o: def.h -eval.o: expr.h -eval.o: idf.h -eval.o: label.h -eval.o: level.h -eval.o: mes.h -eval.o: nobitfield.h -eval.o: nocross.h -eval.o: nofloat.h -eval.o: nopp.h -eval.o: sizes.h -eval.o: spec_arith.h -eval.o: stack.h -eval.o: target_sizes.h -eval.o: type.h -switch.o: Lpars.h -switch.o: arith.h -switch.o: assert.h -switch.o: botch_free.h -switch.o: code.h -switch.o: debug.h -switch.o: density.h -switch.o: expr.h -switch.o: idf.h -switch.o: label.h -switch.o: noRoption.h -switch.o: nobitfield.h -switch.o: nofloat.h -switch.o: nopp.h -switch.o: spec_arith.h -switch.o: switch.h -switch.o: type.h -conversion.o: Lpars.h -conversion.o: arith.h -conversion.o: nobitfield.h -conversion.o: nocross.h -conversion.o: nofloat.h -conversion.o: sizes.h -conversion.o: spec_arith.h -conversion.o: target_sizes.h -conversion.o: type.h -blocks.o: align.h -blocks.o: arith.h -blocks.o: atw.h -blocks.o: label.h -blocks.o: nocross.h -blocks.o: nofloat.h -blocks.o: sizes.h -blocks.o: spec_arith.h -blocks.o: stack.h -blocks.o: target_sizes.h -dataflow.o: dataflow.h -tokenfile.o: Lpars.h -declar.o: LLlex.h -declar.o: Lpars.h -declar.o: arith.h -declar.o: debug.h -declar.o: declar.h -declar.o: decspecs.h -declar.o: def.h -declar.o: expr.h -declar.o: field.h -declar.o: file_info.h -declar.o: idf.h -declar.o: label.h -declar.o: level.h -declar.o: nobitfield.h -declar.o: nocross.h -declar.o: nofloat.h -declar.o: nopp.h -declar.o: sizes.h -declar.o: spec_arith.h -declar.o: struct.h -declar.o: target_sizes.h -declar.o: type.h -statement.o: LLlex.h -statement.o: Lpars.h -statement.o: arith.h -statement.o: botch_free.h -statement.o: code.h -statement.o: debug.h -statement.o: def.h -statement.o: expr.h -statement.o: file_info.h -statement.o: idf.h -statement.o: label.h -statement.o: nobitfield.h -statement.o: nofloat.h -statement.o: nopp.h -statement.o: spec_arith.h -statement.o: stack.h -statement.o: type.h -expression.o: LLlex.h -expression.o: Lpars.h -expression.o: arith.h -expression.o: expr.h -expression.o: file_info.h -expression.o: idf.h -expression.o: label.h -expression.o: noRoption.h -expression.o: nobitfield.h -expression.o: nofloat.h -expression.o: nopp.h -expression.o: spec_arith.h -expression.o: type.h -program.o: LLlex.h -program.o: Lpars.h -program.o: arith.h -program.o: code.h -program.o: declar.h -program.o: decspecs.h -program.o: def.h -program.o: expr.h -program.o: file_info.h -program.o: idf.h -program.o: label.h -program.o: nobitfield.h -program.o: nofloat.h -program.o: nopp.h -program.o: spec_arith.h -program.o: type.h -Lpars.o: Lpars.h -ival.o: LLlex.h -ival.o: Lpars.h -ival.o: align.h -ival.o: arith.h -ival.o: assert.h -ival.o: class.h -ival.o: debug.h -ival.o: def.h -ival.o: estack.h -ival.o: expr.h -ival.o: field.h -ival.o: file_info.h -ival.o: idf.h -ival.o: label.h -ival.o: level.h -ival.o: noRoption.h -ival.o: nobitfield.h -ival.o: nocross.h -ival.o: nofloat.h -ival.o: nopp.h -ival.o: sizes.h -ival.o: spec_arith.h -ival.o: struct.h -ival.o: target_sizes.h -ival.o: type.h -char.o: class.h -symbol2str.o: Lpars.h diff --git a/lang/cem/cemcom/Parameters b/lang/cem/cemcom/Parameters index 4b4c7af24..6df5e2d82 100644 --- a/lang/cem/cemcom/Parameters +++ b/lang/cem/cemcom/Parameters @@ -24,10 +24,6 @@ #define IFDEPTH 256 /* maximum number of nested if-constructions */ -!File: maxincl.h -#define MAXINCL 12 /* maximum number of #include directories */ - - !File: density.h #define DENSITY 2 /* see switch.[ch] for an explanation */ diff --git a/lang/cem/cemcom/SmallPars b/lang/cem/cemcom/SmallPars index 2484d2421..6d21729ec 100644 --- a/lang/cem/cemcom/SmallPars +++ b/lang/cem/cemcom/SmallPars @@ -24,10 +24,6 @@ #define IFDEPTH 256 /* maximum number of nested if-constructions */ -!File: maxincl.h -#define MAXINCL 12 /* maximum number of #include directories */ - - !File: density.h #define DENSITY 2 /* see switch.[ch] for an explanation */ diff --git a/lang/cem/cemcom/domacro.c b/lang/cem/cemcom/domacro.c index ada513c03..a1dbbc66c 100644 --- a/lang/cem/cemcom/domacro.c +++ b/lang/cem/cemcom/domacro.c @@ -26,7 +26,7 @@ #include "class.h" #include "macro.h" -IMPORT char *inctable[]; /* list of include directories */ +IMPORT char **inctable; /* list of include directories */ IMPORT char *getwdir(); PRIVATE char ifstack[IFDEPTH]; /* if-stack: the content of an entry is */ /* 1 if a corresponding ELSE has been */ diff --git a/lang/cem/cemcom/main.c b/lang/cem/cemcom/main.c index 3a393009c..3f93e8534 100644 --- a/lang/cem/cemcom/main.c +++ b/lang/cem/cemcom/main.c @@ -11,7 +11,6 @@ #include "target_sizes.h" #include "debug.h" #include "use_tmp.h" -#include "maxincl.h" #include "inputtype.h" #include "input.h" #include "level.h" @@ -35,11 +34,9 @@ char options[128]; /* one for every char */ #ifndef NOPP int inc_pos = 1; /* place where next -I goes */ -char *inctable[MAXINCL] = { /* list for includes */ - ".", - "/usr/include", - 0 -}; +int inc_total = 0; +int inc_max; +char **inctable; extern char *getwdir(); #endif NOPP @@ -89,8 +86,14 @@ main(argc, argv) prog_name = argv[0]; init_hmask(); - #ifndef NOPP + inctable = (char **) Malloc(10 * sizeof(char *)); + inctable[0] = "."; + inctable[1] = "/usr/include"; + inctable[2] = 0; + inc_total = 2; + inc_max = 10; + init_pp(); /* initialise the preprocessor macros */ #endif NOPP diff --git a/lang/cem/cemcom/options.c b/lang/cem/cemcom/options.c index 505b3c8e9..4b68653a4 100644 --- a/lang/cem/cemcom/options.c +++ b/lang/cem/cemcom/options.c @@ -10,7 +10,6 @@ #include "nofloat.h" #include "nopp.h" #include "idfsize.h" -#include "maxincl.h" #include "nobitfield.h" #include "class.h" #include "macro.h" @@ -23,8 +22,10 @@ #include "noRoption.h" #ifndef NOPP -extern char *inctable[MAXINCL]; +extern char **inctable; extern int inc_pos; +extern int inc_max; +extern int inc_total; #endif NOPP extern char options[]; @@ -126,15 +127,25 @@ deleted, is now a debug-flag case 'I' : /* -Ipath : insert "path" into include list */ #ifndef NOPP if (*text) { - int i = inc_pos++; + int i; register char *new = text; + if (++inc_total > inc_max) { + char **n = (char **) + Malloc((10+inc_max)*sizeof(char *)); + for (i = 0; i < inc_max; i++) { + n[i] = inctable[i]; + } + free((char *) inctable); + inctable = n; + inc_max += 10; + } + + i = inc_pos++; while (new) { char *tmp = inctable[i]; inctable[i++] = new; - if (i == MAXINCL) - fatal("too many -I options"); new = tmp; } }