1*4887Schin06-09-23 ppop.c: check -I <dev,ino> for c and TYPE_HOSTED|TYPE_VENDOR attrs 2*4887Schin06-09-23 pplex.c: add HOSTED check for "/* appears in // comment" -- doh 3*4887Schin06-09-05 pp.probe: add version stamp comment 4*4887Schin06-06-29 pp.probe: gcc pp:linefile probe (otherwise it can dump!) 5*4887Schin06-06-28 ppproto.c: fix inappropriate __PARAM__ insertion 6*4887Schin06-05-09 pp.tab,ppcontrol.c,ppproto.c: add externalize 7*4887Schin ppfsm.c: handle compatibility ul numeric qualifiers 8*4887Schin06-02-28 probe.win32: add wchar_t probe 9*4887Schin06-01-11 pplex.c: fix rpcgen pp:passthrough header splice bug 10*4887Schin05-12-16 pplex.c: fix imake pp:passthrough comment splice bug 11*4887Schin05-09-16 pplib.h: add <string.h> for standalone proto 12*4887Schin05-07-31 pplib.h: finally trust __STDC__ headers 13*4887Schin05-04-11 pplex.c: fix '"a" #s' catliteral + stringize bug 14*4887Schin05-03-29 pp.probe: check $? and stderr messages for pp:lineid 15*4887Schin05-02-20 probe.win32: handle /platformsdk mount 16*4887Schin05-01-11 ppargs.c: fix -I-S docs 17*4887Schin ppinput.c: ppproto() only for COMPATIBILITY or PLUSPLUS 18*4887Schin04-10-22 ppproto.c: handle `type var[x][y]' arg prototype 19*4887Schin04-10-01 pplex.c: really fix directive hidden newline logic 20*4887Schin04-08-31 pplex.c: fix directive hidden newline logic 21*4887Schin ppcall.c: fix '(' peek bug that missed the MARK 22*4887Schin04-08-30 add pragma pp:pragmaflags PP_PRAGMAFLAGS, pp:system_header 23*4887Schin04-08-11 ppproto.c: intercept "#(define|undef) extern" for __(EX|IM)PORT__ 24*4887Schin04-07-23 probe.win32: generalize #include dir order search 25*4887Schin04-07-22 ppsearch.c: access() => eaccess() 26*4887Schin04-05-20 ppproto.c: don't __PROTO__ `int fun __P((int));' 27*4887Schin04-04-15 probe.win32: sync up with uwin 2003-08-06 master -- oops 28*4887Schin04-04-01 pp.probe: add stdinclude usrinclude path cleanup 29*4887Schin04-02-29 ppproto.c: fix bug that skipped prototyped check during notices check 30*4887Schin ppproto.c: recognize `Copyright nn' 31*4887Schin04-02-14 ppproto.c: comment[0]==0 => no notice 32*4887Schin04-02-11 Makefile: fix %.yacc to handle cross-compile 33*4887Schin04-01-28 pp.h,pplib.h,ppop.c: add PP_RESET to restore original pp.symtab scope 34*4887Schin03-12-12 ppcall.c: missing macro actual warned but expanded 35*4887Schin03-11-12 ppexpr.c: fix premature #if expression token strip 36*4887Schin03-06-21 ppproto.c: fix T_INVALID ? splice bug that did 0?val => 0?vaL 37*4887Schin03-06-10 ppargs.c: add -D-d and -D-m 38*4887Schin ppargs.c: add gnu options { -dD -dM -imacros -include -lang-* -lint } 39*4887Schin03-05-19 pplex.c: fix stray SKIPMACRO bug 40*4887Schin03-05-18 ppcall.c: add SYM_FUNCTION '(' peek to avoid inappropriate ungetchr() 41*4887Schin03-04-30 pp:mapinclude hosted <std.h>="." will search only hosted dirs 42*4887Schin pp.probe: add pp:mapinclude probe for namespace incursions 43*4887Schin03-04-29 ignore()=>ppmapinclude(), add pp:mapinclude 44*4887Schin03-03-25 ppop.c: PP_RESERVED now deletes old symbol before redef with lex value 45*4887Schin03-03-14 pp.probe: fix the #include_next probe 46*4887Schin03-02-28 ppsearch.c: fix -MM bug that missed prefix include hosted mark 47*4887Schin03-02-18 pplex.c: handle COMPATIBILITY \" and \' in macro actuals 48*4887Schin03-01-23 probe.win32: mingw32 tweaks 49*4887Schin02-12-17 ppargs.c: document -I-! 50*4887Schin02-12-06 -I- pp:noprefix otherwise pp:prefix default 51*4887Schin02-11-29 probe.win32: added __INTSIZE, drop dm pp:noallmultiple 52*4887Schin02-11-26 pp.def: add STDC_HOSTED 53*4887Schin probe.win32: add C95 and C99 STDC predefined macros 54*4887Schin02-10-30 ppfsm.h: add boundary check to IDSTATE() 55*4887Schin02-10-18 probe.win32: update for mingw 56*4887Schin02-10-15 ppsearch.c: if PLUSPLUS && not found && no suffix then try with .h 57*4887Schin02-10-10 pplex.c: fix does not end with `newline' bugs 58*4887Schin02-10-01 ppop.c,ppargs.c: -I-I => -I-M with proper docs; -I-I for PP_IGNORE 59*4887Schin02-09-21 pp.probe: add pp:nocatliteral test 60*4887Schin02-09-10 pp.tab: add pp:passthrough to match -D-P docs 61*4887Schin02-08-30 probe.win32: fix for borland cc -E 62*4887Schin02-08-22 ppexpr.c: add __SOURCE__ and #match(string,pattern) 63*4887Schin02-06-25 ppproto.c: fix pragma search bug that stopped after 8 comment lines 64*4887Schin02-06-11 ppsearch.c: fix ... next include search to skip *all* intermediates 65*4887Schin02-05-28 probe.win32: updates for { mingw } 66*4887Schin ppsearch.c: don't use inherited prefix for <...> -- duh 67*4887Schin02-05-24 ppcontrol.c: simplify getline() space canonicalization 68*4887Schin probe.win32: updates for { digital-mars borland lcc } 69*4887Schin02-05-20 ppcontrol.c: update to use regsubcomp(),regsubexec() 70*4887Schin02-05-09 ppcontrol.c: inhibit `EOF in directive': newline warning will catch it 71*4887Schin pplex.c: inhibit `newline in character constant' for hosted directives 72*4887Schin02-05-06 probe.win32: add more win32 compilers 73*4887Schin02-04-15 probe.win32: handle long long unsigned int 74*4887Schin02-04-12 ppproto.c: fix NOTICED check 75*4887Schin02-03-15 ppproto.c: fix cpp pp:compatibility double line sync memory fault 76*4887Schin02-03-11 pplex.c: add pp:modern to emit \a \v instead of octal forms 77*4887Schin02-02-14 ppargs.c: fix -D or -U as last arg core dump 78*4887Schin02-01-24 pplib.h: use vmalloc(Vmregion) if _std_malloc 79*4887Schin02-01-23 probe.win32: add more msvc predefined macro candidates 80*4887Schin02-01-14 ppproto.c: #pragma prototyped noticed -- has notice comment 81*4887Schin02-01-10 ppproto.c: fix PROTO_FORCE|PROTO_PASS bug that disabled PROTO_FORCE 82*4887Schin02-01-08 pplex.c: fix HEADEREXPAND|HEADEREXPANDALL logic 83*4887Schin01-11-22 pplex.c: add pp:headerexpandall for gcc vs. msvc <...> expand diff 84*4887Schin pp.probe: add pp:headerexpandall test 85*4887Schin01-10-20 pplex.c: fix pp:splicespace inside "..." 86*4887Schin01-09-11 ppinput.c: use pathnative() for native fs representation 87*4887Schin01-08-31 pp.probe: handle -Dmacro(args)=value 88*4887Schin01-08-11 ppcontrol: fix ... and __VAR_ARGS__ for C99 89*4887Schin ppsearch: fix SEARCH_NEXT bug that skipped the include stack 90*4887Schin01-08-06 ppproto: preserve #! first line for # comments 91*4887Schin01-07-17 gentab.sh: fix ksh test to omit pdksh (typeset -u fails) 92*4887Schin01-06-26 ppproto.c: fix another buffer boundary bug that didn't preserve OTHER 93*4887Schin01-06-06 ppsearch.c: list PP_FILEDEPS headers once 94*4887Schin01-06-01 pp.h,ppop.c,ppsearch.c: allow multiple PP_FILEDEPS (-M) 95*4887Schin01-05-24 pp.probe: fix pp:hostedtransition probe: only suncc can __STDC__==1? 96*4887Schin01-04-25 pp.probe: split macro probe files for compilers that have #line limits 97*4887Schin01-04-19 pp.h,pplex.c,ppproto.c: fix { \a \E \v } EBCDIC translations 98*4887Schin01-04-16 pp.tab: add pp:splicespace for mvs jcl decks -- the 60's live on 99*4887Schin01-04-13 ppbuiltin: add __FUNCTION__ cache for functions that span the buffer 100*4887Schin01-03-08 pp.tab,ppbuiltin,ppcontrol,probe: add pp:hostedtransition 101*4887Schin01-02-22 pp.tab,ppfsm,pplex,pp.probe,probe.win32: add pp:zeof for ^Z => EOF 102*4887Schin01-02-14 ppcall.c: fix macro(tuple*) bug that truncated macro arg expand buffer 103*4887Schin pplex.c: fix # inside pp:pragmaexpand 104*4887Schin gentab.sh: change ksh test for openbsd /bin/sh 105*4887Schin ppproto.c: fix buffer boundary bug that lost call nesting 106*4887Schin ppproto.c: add realloc prototype and memcpy=>memcopy strcpy=>strcopy 107*4887Schin01-02-09 ppsearch.c: fix another pp.include null dereference 108*4887Schin01-02-07 ppcall.c: fix stack inequality checks 109*4887Schin ppcall.c: handle trailing \ in macro args 110*4887Schin01-02-06 fix readonly buffer write (cpp test 07:2873) 111*4887Schin01-02-04 fix -M* to properly handle .cxx .cpp .C input 112*4887Schin fix IN_BUFFER pop bug that did not reset the token pointer 113*4887Schin01-01-01 pp:headerexpand: space ok if not IN_MACRO 114*4887Schin ppcall: hide if IN_FILE|IN_MACRO|IN_EXPAND 115*4887Schin pplex: don't complain about ^L or ^Z as last char in file 116*4887Schin ppsearch: fix #include <.../foo.h> loop 117*4887Schin ppcontrol: manulally increment IN_RESCAN error_info.line 118*4887Schin00-12-25 add EXPOSE to expose hidden macros (for #import ...) 119*4887Schin probe.win32: add cc path *and* args to first line to avoid hash clash 120*4887Schin pp.probe: filter out invalid symbols for predefined macro scan, duh 121*4887Schin pp:headerexpand: limit expansion to IN_MACRO 122*4887Schin00-10-31 __STDC__==0 if HOSTED && _UWIN 123*4887Schin00-10-26 pplib.h: change SEEK_SET to O_RDONLY for aix 124*4887Schin00-10-17 pp.probe: __IMPORT__ => __STDPP__IMPORT__ 125*4887Schin00-09-18 add __FUNCTION__=#(FUNCTION), #define <a b> c 126*4887Schin pp.probe: add probe_longlong 127*4887Schin probe.win32: add #define <long long> 128*4887Schin00-09-11 add pp:noproto (NOPROTO pp.option) to disable ppproto() 129*4887Schin00-09-01 ppproto: fix buffer slide bug 130*4887Schin00-08-11 pplb.h: check for <unistd.h> already included for PROTOMAIN 131*4887Schin pragma: add pp:pragmaexpand to expand pragma args 132*4887Schin ppcontrol: always disable pp:* pragma expansion 133*4887Schin ppcall: fix pp:hide buffer clash 134*4887Schin00-06-01 pplex: fix "\\U" and "\\u" 135*4887Schin00-05-22 ppsearch: fix uwin #include <C:/foo/bar.h> 136*4887Schin00-05-16 probe.win32: update reserved word list 137*4887Schin00-05-09 ppcontrol: fix C++ macro >+> invalid fuse 138*4887Schin ppcontrol: 'macro' expansion only for COMPATIBILITY | TRANSITION 139*4887Schin c9x: up to date with proposed standard 140*4887Schin00-04-01 pp.tab: add allpossible and ALLPOSSIBLE 141*4887Schin ppmacref: fix ref inside literal catenation 142*4887Schin00-02-14 pppopen(): general comments with "bme" (begin middle end) string 143*4887Schin00-01-11 pp.probe: hosttype now in C.probe 144*4887Schin99-11-19 is[a-z]*( => ppis[a-z]*( 145*4887Schin ppproto: "..." [A-Z_]+ "..." ignores [A-Z_]+ if PROTOMAIN 146*4887Schin99-11-11 ppproto: use astlicense() 147*4887Schin99-10-31 ppproto: add PROTO_SHARP, update license parse 148*4887Schin pplex: fix some MARK bugs seen by #define X "A B <C@D>" 149*4887Schin99-10-01 add pp:stringsplit for "...\\n..." => "..."\n"..." 150*4887Schin add pp:lineid to match PP_LINEID 151*4887Schin99-07-17 ppbuiltin: fix getline() canon spacing for numbers 152*4887Schin ppsearch: fix FILEDEPS not found \\n print 153*4887Schin pplex: fix spurious FILEDEPS '.' empty character constant message 154*4887Schin ppargs: fix usage error call and error_info.id default value 155*4887Schin ppproto: fix up copyright notice for ksh93 style .author file 156*4887Schin ppproto: check if notice text if file path 157*4887Schin99-06-02 ppproto: add __MANGLE_package_DATA__ & __MANGLE_package_FUNC__ 158*4887Schin99-05-26 ppcontrol: all pragmas but prototyped need pp: 159*4887Schin99-05-25 ppargs: long options 160*4887Schin99-05-22 ppproto: changes for full ast vs. PROTO_STANDALONE 161*4887Schin99-05-09 ppinput: add #pragma pp:native and (pp.option&NATIVE) for native paths 162*4887Schin99-04-22 ppproto: finish type=open notice 163*4887Schin99-02-11 #define __STDC__ #(STDC); demote __STDC__ to 0 for HOSTED (thanks sun) 164*4887Schin99-02-04 pplex: joined strings separated by \\\n 165*4887Schin99-01-11 probe.win32: add _UWIN predef 166*4887Schin98-10-20 pplex: a few more (HOSTED|RELAX) checks 167*4887Schin -D:preserve throws a bunch of stuff -- great for imake (yuk) 168*4887Schin98-05-11 pplex: fix "..." \n off by one line count 169*4887Schin98-02-14 ppcontrol: fix HEADEREXPAND missing NUL 170*4887Schin98-01-23 ppproto: add _GNUC_ to _WIN32 check 171*4887Schin ppfsm: don't optimize for hp.pa 172*4887Schin97-11-11 ppcontrol: fix recursive use of pp.hdrbuf for HEADEREXPAND 173*4887Schin97-10-31 ppmacref,pp.h: add ppmacref sum arg -- some parts assumed it! 174*4887Schin97-10-01 pplex: loosen HEADEREXPAND check 175*4887Schin97-08-11 pplex: fix COMPILE pplex() bug that did not reset NEWLINE for S_MACRO 176*4887Schin pplex: PP_PRESERVE does not pp.pragma <token> ... # <pragma-stuff> 177*4887Schin pp.def: add UWIN 178*4887Schin ppcall: fix macro actual arg error checks 179*4887Schin97-07-17 ppproto.c: C++ __INLINE__ prefixed with extern __MANGLE__ 180*4887Schin ppop.c: fix PP_RESERVED T_* lookup 181*4887Schin97-05-09 pp.def: add MVS :architecture: 182*4887Schin ppfsm.c: change C_* pseudo codes to not clash with ebcdic 183*4887Schin pp.probe: fix stdc.$src sed script 184*4887Schin97-04-01 ppcontrol.c: fix tokop() for PP_RESERVED 185*4887Schin96-12-25 add ms #@ charize to complement # stringize 186*4887Schin pp.probe now detects preincludes 187*4887Schin ppproto: allow #ifdef'd function definions before { 188*4887Schin ppproto: NoN() is not a function 189*4887Schin pp.key,ppkey.h: add int64 190*4887Schin ppargs.c: fix -M{DGM}* 191*4887Schin96-12-06 add pp:headerexpand for ms that expands macros in expanded <...> 192*4887Schin96-10-31 a few more line sync tweaks for EDG C++ 193*4887Schin96-10-11 fix pp:macref off by one for standalone pp (big suprise) 194*4887Schin96-10-01 -D:macref -D-L -> #line (n-2)\n#pragma pp:macref ... 195*4887Schin96-08-11 fix transition macro expansion 196*4887Schin compatibility \" or \' does not start quote 197*4887Schin96-02-29 use <hashkey.h> 198*4887Schin drop ungetchr() in ppcall that modified macro values 199*4887Schin tighten the DEBUG PANIC case in ppcontrol.c 200*4887Schin unify #architecture() and #machine() probe 201*4887Schin add POSIX,WIN32,X86 to pp.sym 202*4887Schin tweak pp.probe 203*4887Schin96-02-14 pp:noallmultiple works on hosted files too 204*4887Schin fix #define /* EOF loop 205*4887Schin96-01-31 fix ## as arg to stringize macro to have ## value, not # 206*4887Schin add nonstopux and SYSTYPE_SVR4 to pp.def 207*4887Schin96-01-01 AT&T Research now 208*4887Schin fix catliteral line sync line number bug 209*4887Schin ppproto() converts non-directive <num>u to (unsigned)<num> 210*4887Schin switch to <regex.h> 211*4887Schin95-10-31 fix PP_COMPILE PP_TRANSITION bug that didn't allow space before # 212*4887Schin fix PP_TRANSITION \newline in definition complaint 213*4887Schin95-10-11 fix ppproto() PROTO_PLUSPLUS bug 214*4887Schin change ignored pp.incref PP_SYNC_POP to PP_SYNC_IGNORE 215*4887Schin add PP_PEDANTIC to handle gnu oversights (can't beat em ...) 216*4887Schin add memfatal() call 217*4887Schin relax newline in quote semantics 218*4887Schin proto inline -> __INLINE__ 219*4887Schin fix __INLINE__ proto def for __GCC__>=2 220*4887Schin95-08-11 pp:preserve for easel (aka IFS) and imake 221*4887Schin fix pp:reguard ## macro output 222*4887Schin fix MARK PANIC with CATLITERAL 223*4887Schin PP_INPUT *.(s|S|as|AS|asm|ASM) implies pp:nocatliteral pp:spaceout 224*4887Schin ppargs() can't use isid() until after FSM_INIT 225*4887Schin -D#... for assert, -D%... for directives 226*4887Schin __STRICT_ANSI__ && __GNUC__ requires -pedantic for PP_STRICT 227*4887Schin #include <.../x> for include_next 228*4887Schin95-05-09 fix tokop() bug that concatenated adjacent strings 229*4887Schin don't concatenate directive string literals in proto 230*4887Schin split pp.mode into pp.mode and pp.option 231*4887Schin restrict pp.probe hostinfo output to the first token 232*4887Schin fix EOB/EOF pplex() nonterminating loop 233*4887Schin unused var cleanup 234*4887Schin add pp:reguard to emit #define and #undef (for C++ templates) 235*4887Schin add a few ppproto '\r's for NT 236*4887Schin fix T_BUILTIN ppsymbol -> ppsymkey pun 237*4887Schin fix pp:stringspan `#define x "' hang 238*4887Schin95-04-01 fix pp:hide for macros defined before the hide 239*4887Schin fix pp:map getline space canonicalization 240*4887Schin fix proto `<digits>[uU]' 241*4887Schin proto does // comments by default (fixes bug introduced 07/17/94) 242*4887Schin proto does "..." "..." string literal concatenation 243*4887Schin spice up proto copyright comments for nonexclusive license 244*4887Schin add hosttype assertion 245*4887Schin fix proto `typedef type fun(args)' 246*4887Schin proto copyright finishing touches 247*4887Schin fix overzealous "empty character constant" message 248*4887Schin95-02-14 pp:nopredefined probe info defines are now pp:builtin 249*4887Schin clean up pp:hosted conflicts 250*4887Schin tighten up unknown directive warning 251*4887Schin PP_INPUT *.(s|as|AS|asm|ASM) implies pp:nocatliteral pp:spaceout 252*4887Schin change newof(0,char,n,0) to newof(0,char,0,n) if 0 init not needed 253*4887Schin don't emit unkown directives inside #if 0 ... #endif 254*4887Schin95-01-19 *strict-* does not force STRICT 255*4887Schin token##null-last-variadic-arg consumes token (to match gcc) 256*4887Schin variadic actuals call be one less than arity (to match gcc) 257*4887Schin fix PLUSPLUS digraph bug that lost comment state 258*4887Schin tighten up PLUSPLUS //, /*, */ interaction warnings 259*4887Schin macro formals in "..." for COMPATIBILITY|TRANSITION 260*4887Schin macro formals in '...' for COMPATIBILITY|TRANSITION|!STRICT 261*4887Schin STRINGSPAN allows '\n' in '... too 262*4887Schin add PP_SYNC_* flags for pp.incref arg 3 263*4887Schin add PP_SYNC_INSERT for invented file references 264*4887Schin fix C++ fsm bug that popped out of comment in // /* */ ... 265*4887Schin PP_INPUT *.(s|S|asm|ASM) implies pp:nocatliteral pp:spaceout 266*4887Schin95-01-01 avoid string literal concatenation in pp.probe #if #predicate() tests 267*4887Schin fix pplib.h memcpy,strncmp PROTOMAIN prototypes (its a nop tho) 268*4887Schin94-11-11 fix readonly memory reference in refill 269*4887Schin add C++ digraphs (digraph = --trigraph) 270*4887Schin add C++ T_EXPLICIT -- did dos take over C++? 271*4887Schin fix improper ppproto() C++ __PARAM__ expansion 272*4887Schin94-11-01 allow #include string header arg concatenation (yes, its not ansi) 273*4887Schin #macdef macros are recursive 274*4887Schin94-10-01 fix C++ } loop in ppfsm/refill 275*4887Schin T_NOISES consumes symbol and optional paren group 276*4887Schin __builtin_* T_NOISES by default 277*4887Schin fix "..." "...MARK..." join 278*4887Schin fix STANDALONE */*comment*/ 279*4887Schin94-09-11 fix pp.probe cp+strip with chmod u+w 280*4887Schin94-08-11 add -I<vdb-archive> to handle pax -x ppar header archives 281*4887Schin fix -D-Q header checkpoints 282*4887Schin add `pp:chop prefix' to chop prefix/ from include prefix/*/* 283*4887Schin add pp:keyargs for key=value macro formals/actuals (not for C!) 284*4887Schin94-06-01 fix ppcontrol/tokop() that botched pp:id, etc. 285*4887Schin add pp:plussplice to handle cfront // \<newline> ignorance 286*4887Schin inhibit trigraph conversion for pp:compatibility, duh 287*4887Schin new C++ keywords enabled by pp:keyword 288*4887Schin proto: int fun xxx((yyy)) is macro call, not decl 289*4887Schin fix !ALLMULTIPLE pp:load to SKIP between duplicated line syncs 290*4887Schin fix PP_DUMP for pp:noallmultiple, optimize pp:load format 291*4887Schin fix CPP CACHEOUTX() buffer boundary bug 292*4887Schin94-04-01 drop warnings for -X* 293*4887Schin fix ppproto() %% in comment bug for yacc proto 294*4887Schin PP_COMMENT now truncates comments to MAXTOKEN-4 295*4887Schin94-03-01 no pp:truncate for #pragma pp:macref 296*4887Schin94-01-01 fix STANDALONE+PP_TRUNCATE fsm macro bug 297*4887Schin drop __VOID__ from ppproto.c 298*4887Schin93-12-01 release 299*4887Schin93-11-11 fix PP_COMPILE+PP_TRUNCATE=8 bug for continue,unsigned,etc. 300*4887Schin add PP_LINEBASE for compilers that botch long line sync paths 301*4887Schin fix #if unsigned promotions 302*4887Schin aggressive interactive line splice flush 303*4887Schin fix #else inside multiline null dereference 304*4887Schin fix "..." newline space # COMPATIBILITY CATLITERAL bug 305*4887Schin fix m(a)b compatibility token pasting [cpp/test/ess.01.c] 306*4887Schin fix nested @X mark bug [cpp/test/net.02.c] 307*4887Schin93-10-11 add FSM_COMPATIBILITY for floating point hex -- yo ansi, anybody home 308*4887Schin add #else if|ifdef|ifndef for COMPATIBILITY but with warning 309*4887Schin drop PP_HOSTED, add ppop(PP_CDIR|PP_HOSTED,"-",n), -D-I for pp:cdir 310*4887Schin93-10-01 add pp:opspace to tokenize <binop><space>= to <binop>= 311*4887Schin93-08-11 drop ancient BCD constant (`...`) detection -- wake up cfront 312*4887Schin fix PP_TRUNCATE macro fsm bug that missed some expansions 313*4887Schin fix stringize bug that choked if space preceded # 314*4887Schin fix <function-like-macro> <identifier> bug that omitted space 315*4887Schin93-07-17 minor transition mode fix for string concatenation 316*4887Schin fix standalone macdef line sync buffer bug 317*4887Schin pp:noline turns off linesync, pp:line restores it 318*4887Schin93-06-22 add pp:prefix to control prefix include compatibility 319*4887Schin93-04-01 use probe_verbose in predefined symbol probe 320*4887Schin93-03-11 close fd after last file block read -- relaxes open fd limit 321*4887Schin remove pp.control nesting limit 322*4887Schin add `#rename old new' 323*4887Schin __STDC__ not defined for plusplus (until they figure it out) 324*4887Schin93-01-22 fix ansi macro args recursion bug 325*4887Schin93-01-11 fix '\377'<0 for signed char compilers 326*4887Schin add RELAX for __STDPP__directive directives 327*4887Schin92-12-25 fix #include guard test that omitted IN_tokens for CPP=1 328*4887Schin92-12-11 fix pp:truncate for STANDALONE and COMPILE 329*4887Schin fix pp:allmultiple again! 330*4887Schin92-11-30 add pp:final, pp:initial 331*4887Schin add __STDPP__directive and #(directive) as ??= alternative 332*4887Schin relax obsolete macro expand warning for _xxx||xxx 333*4887Schin retain quoted \newline when PP_LINEID != "" 334*4887Schin fix CATLITERAL hidden newline line sync 335*4887Schin92-11-11 fix COMPATIBILITY EOF in macro arg list and # in macro body 336*4887Schin fix [?\] on 4K buffer boundary bug that lost next refill() 337*4887Schin fix ppproto bug that botched -ih comments 338*4887Schin92-10-31 fix standalone -C bug that duplicated output buffer 339*4887Schin add pp:stringspan to handle gnu "<newline>" extension 340*4887Schin92-10-12 fix T_X_GROUP asm bug 341*4887Schin allow `#define a "b' pp:compatibility hack 342*4887Schin92-08-11 add PP_PLUSCOMMENT, pp:pluscomment probe 343*4887Schin add #(default v,d) #(empty v) #(iterate m,...) 344*4887Schin compatibility allows #define f(a,,b) for 2 args! 345*4887Schin probe now handles gcc -E -g3 to get gnu predefines 346*4887Schin92-07-17 fix pp:multiple again, fix ppproto() out of bounds 347*4887Schin PP_STANDARD is always PP_CDIR and PP_HOSTED 348*4887Schin92-07-11 add #import and #include_next probes 349*4887Schin92-06-11 fix bug where comments dissappeared after disabled macro in standalone 350*4887Schin COMPATIBILITY macro recursion bug fix may cause some to be missed 351*4887Schin PP_MACREF or -D-L- ignores #line until #line with file arg 352*4887Schin92-06-01 add pp:ignore 353*4887Schin fix probe of stdpp to handle -I[-+][CH] 354*4887Schin92-05-11 add pp:hide <id>, pp:note <id>, noticed(<id>), exists(<...>) 355*4887Schin add defined(__STDPP__<pragma>) feature test 356*4887Schin add PP_CDIR, pp:cdir for C++ extern "C" { ... } include wrapping 357*4887Schin pp.probe now handles predefines with values other than 1 358*4887Schin92-04-11 add inverse proto (K&R -> prototype) to ppproto 359*4887Schin92-04-01 release 360*4887Schin92-02-29 #include <...> inside <xxx.h> gets next xxx.h on -I list 361*4887Schin non-libpp generated symbols containing ' ' are not truncated 362*4887Schin92-02-11 conversion to new lexer brings time close to reiser (esp. w/gcc -O) 363*4887Schin combine standalone (ppcpp) tokenizing (pplex) and proto lex tables 364*4887Schin recode ppproto for standalone operation via PROTOMAIN 365*4887Schin add PP_NOHASH for PP_COMPILE front ends that rehash T_ID anyway 366*4887Schin delete PP_NOQUOTE 367*4887Schin delete #option(strict) test in probe in favor of non-hosted warnings 368*4887Schin add unsigned to ppexpr() 369*4887Schin91-10-11 add pp:truncate <len> for non-flexname compilers 370*4887Schin91-09-11 fix ppproto aggression on f(*y); -> f __PROTO__((*y)); 371*4887Schin91-08-11 switch seterror() to error_info.* 372*4887Schin add pp:linefile to force file name in line sync 373*4887Schin add pp:spaceout for probed compilers that don't allow pp override 374*4887Schin91-06-11 fix ignored -I/usr/include bug 375*4887Schin91-04-11 set SYM_INIT in pp.macref for -U on cmd line 376*4887Schin91-01-31 replace pp:pragma and pp:directive with pp:map 377*4887Schin replace #assert and #unassert with #define #... and #undef #... 378*4887Schin #assert and #unassert compatibility retained via pp:map 379*4887Schin replace -D#directive with -D%directive (because of #assert change) 380*4887Schin add pp:splicecat for \<newline> #define token paste 381*4887Schin fix \<newline> bug that added space in COMPATIBILITY quoted strings 382*4887Schin90-12-11 fix #pragma pp:multiple 383*4887Schin90-11-11 generalize handling of non-standard keywords for COMPILE 384*4887Schin replace pp:identifier/PP_IDENTIFIER with pp:reserved/PP_RESERVED 385*4887Schin pp*keys* -> ppkey 386*4887Schin add PP_NOISE 387*4887Schin (gag) handle msdos paths by changing \ to / and retrying on failure 388*4887Schin (gag) handle msdos :> operator by pplex() '+' return 389*4887Schin add #pragma prototyped and ppproto.c for prototype conversion 390*4887Schin add unsigned long arg to PP_MACREF for hashed macro arity+value 391*4887Schin90-10-11 0f is not a float constant 392*4887Schin change -I-M to -I-I, file just lists include files to be ignored 393*4887Schin fix ppprobe for __STDC__==0 hybrids 394*4887Schin add pp.flags and PP_[a-z0-9]+ for exported state info 395*4887Schin90-10-01 fix standalone ppmacref for directives 396*4887Schin add `try' to C++ keywords 397*4887Schin fine tune a few COMPILE error messages 398*4887Schin privatize pp.h 399*4887Schin90-08-11 use opt_again in cmdargs() option parsers 400*4887Schin (gag) add pp:macref macro reference pragma to handle CC preprocessors 401*4887Schin (gag) add pp:spaceout to handle ansi + asm hacks 402*4887Schin90-07-17 remove spaces from macdef line sync (blew sun cc) 403*4887Schin90-06-11 add internal ppsymkey to avoid ppsymbol.value pun for SYM_KEYWORD 404*4887Schin90-05-01 fix catliteral bug of `"..." << ' -> `"..." <=' 405*4887Schin90-04-01 fix `ifndef-define-endif' include wrapper test 406*4887Schin90-03-27 add setpreroot() to ppop() [ sleazy but well hidden ] 407*4887Schin90-03-22 pp.macref called for all undef's 408*4887Schin90-03-20 add <prefix>cpp checks to ppprobe 409*4887Schin add pp:hostdir before pp:include in ppprobe 410*4887Schin fix PP_HOSTDIR op with no dir arg 411*4887Schin90-03-15 System V CCS compatibility update 412*4887Schin add PP_ASSERT 413*4887Schin add -A for PP_ASSERT and -YI,dir for PP_STANDARD 414*4887Schin add ppincref.c and -H to use it 415*4887Schin -Xa defines __STDC__ to 0 (gak) 416*4887Schin90-03-09 duplicate macro formals cause level 2 error 417*4887Schin90-03-01 add #(ARGC) for (variadic) macro arg count 418*4887Schin90-02-11 fix line sync number bug in pppush() 419*4887Schin89-12-01 ignore leading = in pragma map for old pragma compatibility 420*4887Schin check for NEWLINE on first macdef line sync 421*4887Schin89-11-11 add -1 arg to pp.incref -- include skipped 422*4887Schin STRICT 0x7e-macro is T_INVALID per standard 423*4887Schin89-10-31 put all C keys in ppckeys.c, C++ keys in pppkeys.c 424*4887Schin add pp:identifier pragma to selectively undo PP_COMPILE keywords 425*4887Schin add tokop() to ppcontrol to support multi-valued pragmas 426*4887Schin add #ifndef...#endif include optimization for STRICT 427*4887Schin89-10-27 use REF_NORMAL, REF_IF, REF_UNDEF for pp.macref arg2 428*4887Schin89-10-17 fix c(x)y compatibility pasting bug 429*4887Schin #line 1 "f" now marks "f" included 430*4887Schin89-10-11 enable -I. during initialization 431*4887Schin89-10-01 inhibit pp:linetype syncs for top level #line directives 432*4887Schin ----- see HISTORY ----- 433