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