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