1*da2e3ebdSchinlibpp change history 2*da2e3ebdSchin 3*da2e3ebdSchin ----- minor sync release ----- 4*da2e3ebdSchin09/11/89 add extra sun style 1,2 arg to line syncs in ppline with pp:linetype 5*da2e3ebdSchin add pp:oldc to convert __STDC__ void* and prototypes to old C 6*da2e3ebdSchin08/11/89 fix <...> include dir bug 7*da2e3ebdSchin08/08/89 add SYM_INIT for #define during INIT 8*da2e3ebdSchin07/28/89 delete STRIPTOP, STRIP only T_STRING & T_CHARCONST at pp.level==1 9*da2e3ebdSchin add ppcargs() compatibility command line argument parse 10*da2e3ebdSchin07/17/89 dialect: ANSI (default) or (Reiser) compatibility 11*da2e3ebdSchin style: extended (default) or strict 12*da2e3ebdSchin use pathprobe(3) for dynamic ppdefault.h 13*da2e3ebdSchin add PP_PROBE to specify pathprobe() processor 14*da2e3ebdSchin add -[DI]+ to invert options in ppargs() 15*da2e3ebdSchin delete PP_ANSI, PP_DIALECT, PP_INITDIR, PP_LANGUAGE 16*da2e3ebdSchin delete PP_NONHOSTED, PP_NOPASSTHROUGH, PP_PHASEOUT 17*da2e3ebdSchin add #pragma's for most ppargs() options 18*da2e3ebdSchin add #option(pragma-option) predicate test 19*da2e3ebdSchin PP_MACREF now called during initialization 20*da2e3ebdSchin07/11/89 add PP_BUILTIN for external #(...) handler 21*da2e3ebdSchin add line number to missing endif message 22*da2e3ebdSchin ignore errors in skipped ppexpr() &&, || and ?: subexpressions 23*da2e3ebdSchin add space before macro actual in replacement text 24*da2e3ebdSchin07/04/89 fix PP_TRUNCATE interaction with PP_COMPILE 25*da2e3ebdSchin06/30/89 #define x #; x was recognized as directive # 26*da2e3ebdSchin06/27/89 don't pass comments during #if skip 27*da2e3ebdSchin05/01/89 add L"..." and L'...' wide quoted constants 28*da2e3ebdSchin mixed "..." and L"..." ok -- L"..." for COMPILE, first otherwise 29*da2e3ebdSchin fix PASSCOMMENTS in directives 30*da2e3ebdSchin allow #define f(a,) for COMPATIBILITY 31*da2e3ebdSchin fix literal string concatenation bugs 32*da2e3ebdSchin fix header parsing in non-active if-blocks 33*da2e3ebdSchin #endmac now takes no arg 34*da2e3ebdSchin04/11/89 tone down unknown directive diagnostic in conditional 35*da2e3ebdSchin04/07/89 move macref call before arg processing 36*da2e3ebdSchin03/27/89 fix pplex bug that bombed line sync for last line == #include 37*da2e3ebdSchin03/15/89 fix PP_TRUNCATE macro id bit table checks 38*da2e3ebdSchin remove compatibility option s from ppargs() -- belongs in cmds 39*da2e3ebdSchin03/08/89 remove ``empty character constant'' warning for PASSTHROUGH 40*da2e3ebdSchin02/28/89 fix variable n usage conflict for DEFINE: in ppcontrol 41*da2e3ebdSchin02/22/89 fix -T conflict with __GNUC__ in ppargs 42*da2e3ebdSchin02/01/89 add -T (PP_TRUNCATE) for old non-flexname compiler compatibility 43*da2e3ebdSchin01/31/89 -I-M-<char><suffix> finds map file by mapping input file name 44*da2e3ebdSchin -I-H[directory] allowed for fine hosted control 45*da2e3ebdSchin01/24/89 fix #undef of SYM_READONLY macro message 46*da2e3ebdSchin add PPCOMPATIBLE for compatibility installation in /lib/cpp 47*da2e3ebdSchin add PP_MAP & -I-M to map include files for minimal including 48*da2e3ebdSchin01/18/89 fix pp.token setting by noting with pp.state|=TOKENSET 49*da2e3ebdSchin01/11/89 fix #if skip bug where quoted token set begin line state 50*da2e3ebdSchin12/11/88 add error checking wrappers to *alloc() 51*da2e3ebdSchin12/05/88 add PP_FILEDEPS (-M) and FILEDEPS mode for BSD compatibility 52*da2e3ebdSchin12/01/88 add #macdef-#endmac and change actualsync() char to SYNC ('\r') 53*da2e3ebdSchin11/30/88 TOKOUTBUF controls 11/28/88 STANDALONE speedup 54*da2e3ebdSchin11/28/88 speed up STANDALONE by avoiding pp.token copy 55*da2e3ebdSchin11/22/88 add comment removal to string_special 56*da2e3ebdSchin11/11/88 LIBEXPR enables expr(3) in ppexpr() (12K extra text) 57*da2e3ebdSchin10/11/88 move VARQUOTE to pp.mode 58*da2e3ebdSchin10/01/88 allow checkpoint files for !STANDALONE 59*da2e3ebdSchin08/31/88 add pp.undefsym for pp.macref's on undefined symbols 60*da2e3ebdSchin08/23/88 0xe+N -> `0xe' `+' `N' 61*da2e3ebdSchin08/16/88 fix ppckeys.c: T_DOUBLE->T_DOUBLE_T, T_FLOAT->T_FLOAT_T 62*da2e3ebdSchin07/17/88 add \newline to string_special 63*da2e3ebdSchin add line number arg to pp.comment call 64*da2e3ebdSchin move private stuff from pp.h to pplib.h 65*da2e3ebdSchin add ignored -v to ppargs() (GNU uses this) 66*da2e3ebdSchin06/22/88 move pp.macref check; stack pp.state in ppcontrol() 67*da2e3ebdSchin add PP_INCREF and (*pp.incref)(old-file, new-file, push|return) 68*da2e3ebdSchin06/11/88 add pp.macref 69*da2e3ebdSchin add ppckeys.h and C, C++ and pcc-based C keyword tables 70*da2e3ebdSchin06/01/88 convert to new hash library interface 71*da2e3ebdSchin05/31/88 pp:readonly in PP_INIT only for STRICT 72*da2e3ebdSchin05/11/88 T_MOREARGS -> T_VARIADIC; add SYM_VARIADIC for ... last macro arg 73*da2e3ebdSchin05/03/88 fix empty include file bug by omitting empty check 74*da2e3ebdSchin04/27/88 ignore space in pragma % maps to accomodate SCCS %.% expansion 75*da2e3ebdSchin04/19/88 change pp.h to check for old nmake cpp clash with ppsymbol 76*da2e3ebdSchin04/11/88 fix flag check bug in ppload() 77*da2e3ebdSchin02/29/88 add MAP_ECHO and %E for MAP_RESCAN + echo 78*da2e3ebdSchin PP_INITDIR inserted before PP_STANDARD during initialization 79*da2e3ebdSchin02/18/88 ignore malformed #'s in COMPATIBILITY macro definitions 80*da2e3ebdSchin add pp.prefix, PP_PREFIX and -I-P for prefix dir "..." includes 81*da2e3ebdSchin02/10/88 add NOQUOTE to disable ' and " and decouple from VARQUOTE 82*da2e3ebdSchin add keyword and quote pragmas 83*da2e3ebdSchin02/02/88 add strcmp builtin predicate for token string value comparison 84*da2e3ebdSchin01/24/88 fix <backslash><newline> handling in #define on bsd 85*da2e3ebdSchin01/20/88 add %T and fix %[...] pragma mapping formats 86*da2e3ebdSchin01/11/88 complete 12/11/87 COMPATIBILITY macro arg /**/ pasting bug fix 87*da2e3ebdSchin complete KEYWORD support 88*da2e3ebdSchin01/08/88 add PP_KEYWORD, (pp.state & KEYWORD), -D-K and #if KEYARGS 89*da2e3ebdSchin01/06/88 hex char constants are now variable length 90*da2e3ebdSchin01/04/88 do not add terminator for COMPATIBILITY " and ' constants 91*da2e3ebdSchin12/11/87 remove #multiple in lieu of #pragma multiple 92*da2e3ebdSchin add %R MAP_RESCAN option to rescan pragma/directive mapping 93*da2e3ebdSchin fix COMPATIBILITY macro arg /**/ pasting bug 94*da2e3ebdSchin12/08/87 recode for updated hash library interface 95*da2e3ebdSchin add T_PTRMEMREF ->* and T_DOTREF .* C++ operator tokens 96*da2e3ebdSchin12/01/87 reorganize pp token numbers to span 0401..0477 97*da2e3ebdSchin11/22/87 add operand error checks to ppexpr() 98*da2e3ebdSchin add PP_DEFAULT and -I-Dfile for fine PPDEFAULT control 99*da2e3ebdSchin11/11/87 pppragma() now omits space after # for primitive passes (uts) 100*da2e3ebdSchin10/30/87 fix line count on `newline' in ['"] constant warning 101*da2e3ebdSchin10/29/87 add MAP_PLUSCOMMENT and %P to pragma|directive mapping 102*da2e3ebdSchin10/28/87 add head & tail args to ppcomment; pass // comments as is 103*da2e3ebdSchin10/23/87 add warning for multiple ppop(PP_LOCAL) calls 104*da2e3ebdSchin10/16/87 change PP_HOSTED to PP_HOSTDIR, add PP_HOSTED and PP_NONHOSTED 105*da2e3ebdSchin add #(BASE) that expands to base name of #(FILE) 106*da2e3ebdSchin10/15/87 for PASSTHROUGH each line of multi-line "..." or '...' is a token 107*da2e3ebdSchin10/14/87 add ppmultiple() for multiple include test ops 108*da2e3ebdSchin10/11/87 delete CONVERTASSIGN -> `=<op>' no longer recognized 109*da2e3ebdSchin delete C++ := -> = conversion 110*da2e3ebdSchin fix COMPATIBILITY macro recursion bug 111*da2e3ebdSchin add `#pragma multiple' equivalent to `#multiple' 112*da2e3ebdSchin10/06/87 split pplex.c adding ppdirective.c and ppbuiltin.c 113*da2e3ebdSchin don't recognize obsolete assignments for PLUSPLUS 114*da2e3ebdSchin10/05/87 fix PLUSPLUS PASSCOMMENTS bug `// */' -> `/* ***/' 115*da2e3ebdSchin10/01/87 allow newlines in ' and " constants for PASSTHROUGH 116*da2e3ebdSchin09/28/87 fix CONVERTCC STRICT bug that omitted octal character constants 117*da2e3ebdSchin add CATLITERAL compile switch for adjacent string literal concatenation 118*da2e3ebdSchin fix "\07" "3" -> "\073" string literal concatenation bug -> "\0073" 119*da2e3ebdSchin09/18/87 complete ppdump() and ppload() checkpoint support 120*da2e3ebdSchin09/17/87 fix macro formal bug that didn't update pointers after realloc() 121*da2e3ebdSchin add PP_DONE complement op to PP_INIT 122*da2e3ebdSchin add SYM_BUILTIN and #pragma pp:builtin to note builtin macros 123*da2e3ebdSchin add PP_DUMP, -D-D and #pragma pp:load checkpoint support 124*da2e3ebdSchin08/20/87 fix bug that omitted some actualsync() calls for '\n' in pp.in->actual 125*da2e3ebdSchin08/19/87 fix pp.linesync==0 && PASSTHROUGH bug that omitted '\n' after "token" 126*da2e3ebdSchin08/11/87 fix #($var) null pointer bug 127*da2e3ebdSchin07/31/87 fix linesync bug for comment after #include in PASSCOMMENTS 128*da2e3ebdSchin07/24/87 add PP_NOPASSTHROUGH 129*da2e3ebdSchin07/16/87 fix predicate missing # ambiguity warning 130*da2e3ebdSchin07/09/87 fix `macro("@*")' bug in expand_special() 131*da2e3ebdSchin06/17/87 fix comment error message check that was off by one line 132*da2e3ebdSchin06/16/87 remove #pragma pp:multiple; add #multiple; retain PP_MULTIPLE 133*da2e3ebdSchin06/08/87 add # operator to disambiguate predicate tests 134*da2e3ebdSchin inhibit more warnings on hosted files 135*da2e3ebdSchin make diagnostics more consistent -- a little more work 136*da2e3ebdSchin PP_READ files and their included files always marked hosted 137*da2e3ebdSchin06/05/87 fix macro actual arg collection with imbedded #include, #line 138*da2e3ebdSchin05/28/87 add `#pragma pp:multiple *' to mark all files multiple 139*da2e3ebdSchin add -D-M for command line equivalent to `#pragma pp:multiple *' 140*da2e3ebdSchin05/01/87 clarify HOSTED and SYM_PREDEFINED 141*da2e3ebdSchin04/24/87 split pplex.c into smaller files -- too big for some compilers 142*da2e3ebdSchin move common wrapper routines into the library 143*da2e3ebdSchin fix ppargs() to cooperate with other option parsers 144*da2e3ebdSchin04/22/87 remove getenv("PPSTANDARD") override of PP_STANDARD 145*da2e3ebdSchin04/21/87 replace yacc parser with recursive expr() from library streval() 146*da2e3ebdSchin04/20/87 add #((<expr>)) expression evaluation on (x) 147*da2e3ebdSchin add #(<sym>=<expr>) to dynamically evaluate macro values 148*da2e3ebdSchin04/11/87 home brew output buffering for PP_STANDALONE -- up to 10% 149*da2e3ebdSchin cleanup 150*da2e3ebdSchin04/10/87 change T_STRING concatenation in preparation for new output buffering 151*da2e3ebdSchin04/09/87 fix character constant conversion warnings 152*da2e3ebdSchin04/07/87 fix \\n and ??/\n bugs in comment scan 153*da2e3ebdSchin04/06/87 add DIGIT, HEX, OCTAL and NONOCTAL case classes to ppdefs.h 154*da2e3ebdSchin use GETCHR() and ISSPECIAL() in outer pplex() loop -- up to 10% 155*da2e3ebdSchin fix macro actual arg count test 156*da2e3ebdSchin04/03/87 add PP_TEST and TEST1, TEST2 to mode for internal tests 157*da2e3ebdSchin04/02/87 delete PPDEFAULT and generalize with PP_READ 158*da2e3ebdSchin note `# <line> "<file>"' as non-standard 159*da2e3ebdSchin add check for malloc() out of space 160*da2e3ebdSchin04/01/87 C specific error messages only if language="C" 161*da2e3ebdSchin C++ specific error messages only if language="C++" 162*da2e3ebdSchin03/31/87 delete command() predicate -- gateway for trojan horse 163*da2e3ebdSchin03/30/87 add dialect() and language() builtin predicates 164*da2e3ebdSchin change in->standard to in->hosted and STANDARD to HOSTED 165*da2e3ebdSchin add PP_HOSTED and change PP_NOSTANDARD to PP_NOHOSTED 166*da2e3ebdSchin ignore #pragma for non-hosted files in STRICT dialect 167*da2e3ebdSchin03/27/87 add predop(); delete pp:plusplus 168*da2e3ebdSchin pp:dialect and pp:language for verification only 169*da2e3ebdSchin03/24/87 ----- first release ----- 170*da2e3ebdSchin03/24/87 ----- first release ----- 171*da2e3ebdSchin03/23/87 allow WARN to apply to all dialects 172*da2e3ebdSchin fix pp:directive `...multiple...' warning 173*da2e3ebdSchin add MAP_NEWLINE to separate multiple pragmas 174*da2e3ebdSchin03/22/87 warn about null macro args for STRICT 175*da2e3ebdSchin add PP_LANGUAGE, `#pragma language [language]' 176*da2e3ebdSchin warn about newline in macro call arguments in directives 177*da2e3ebdSchin warn about directives in macro call arguments for STRICT 178*da2e3ebdSchin validate character constants in #if expressions 179*da2e3ebdSchin03/20/87 add PP_DIRECTIVE and PP_LOCAL 180*da2e3ebdSchin add %I (ignore) map format and allow %X for pragma args 181*da2e3ebdSchin03/19/87 change PP_DEFAULT to PP_STANDARD, add PP_DIALECT 182*da2e3ebdSchin add dialect arg to PP_COMPATIBILITY, PP_DIALECT and PP_STRICT 183*da2e3ebdSchin add `#pragma pp:pragma pass:option format' mapping 184*da2e3ebdSchin03/18/87 delete pp:obsolete; fix `#pragma version' 185*da2e3ebdSchin fixed macro stack frame bug during recursive macro arg expansion 186*da2e3ebdSchin change CONFORMING, PP_CONFORMING to STRICT, PP_STRICT 187*da2e3ebdSchin add `#pragma dialect [dialect]' verification 188*da2e3ebdSchin03/17/87 add PP_NOSTANDARD to disable any special handling of std files 189*da2e3ebdSchin refine mkdefault.sh for sun workstations 190*da2e3ebdSchin remove comma operator from pp.yacc since it implies side effects 191*da2e3ebdSchin add argument type checking for pp:directive and pp:obsolete 192*da2e3ebdSchin03/16/87 refine CONFORMING messages 193*da2e3ebdSchin disambiguate most #assert/#define clashes 194*da2e3ebdSchin add PASSCOMMENT and (*ppcomment)() for old lint fans 195*da2e3ebdSchin03/14/87 #undef in pp:readonly marks id as readonly macro 196*da2e3ebdSchin03/11/87 warn about macros that are predicates in #if expressions 197*da2e3ebdSchin add mode to handle uncoupled flag bit overflow from state 198*da2e3ebdSchin03/04/87 fix COMPATIBILITY to expand a macro in its definition 199*da2e3ebdSchin02/24/87 add gentab.sh and mkdefault.sh to Makefile 200*da2e3ebdSchin02/20/87 add IN_RECURSIVE for proper handling of #(...) 201*da2e3ebdSchin02/16/87 add #unassert; PP_WARN & WARN to note obsolete usage 202*da2e3ebdSchin only recognize directive if # is first char for (state&COMPATIBILITY) 203*da2e3ebdSchin generalize gentab.sh and retrofit pp.tab 204*da2e3ebdSchin change in->name.file to be the name of including file 205*da2e3ebdSchin02/13/87 add pp.tab; PP_PRAGMA "x=y" -> "#pragma x y" 206*da2e3ebdSchin add #(x y...) -> "#x y..." for recursive directive evaluation 207*da2e3ebdSchin02/12/87 #pragma [pass:] [no]option [arg ...] 208*da2e3ebdSchin #pragma pp:[no]directive [pass:]<new-directive> 209*da2e3ebdSchin #pragma pp:id <identifier-character> 210*da2e3ebdSchin02/11/87 distribute post-token switch in pplex() to individual cases (~5%) 211*da2e3ebdSchin02/09/87 clarify invalid numeric token gobble 212*da2e3ebdSchin add VARQUOTE & PP_VARQUOTE for `X...X vs. '...' & "..." constants 213*da2e3ebdSchin02/06/87 change STRICT to CONFORMING; add PP_CONFORMING 214*da2e3ebdSchin02/06/87 change PPBUILTIN to #(<id>) 215*da2e3ebdSchin02/05/87 clarify /*...*/ concatenation for (state&COMPATIBILITY) 216*da2e3ebdSchin add convertcc() to convert new char const to old style 217*da2e3ebdSchin rework # op to work with convertcc() 218*da2e3ebdSchin02/04/87 add =<op> obsolete operators for (state&COMPATIBILITY) 219*da2e3ebdSchin02/02/87 fix expand() to save and restore (state&DISABLE) 220*da2e3ebdSchin12/17/86 first code 221