diff options
author | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-10-04 01:21:34 +0000 |
---|---|---|
committer | tma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-10-04 01:21:34 +0000 |
commit | 45d6a88841f0db650d615522b1f6594ea72ceb7e (patch) | |
tree | dec4fac8ff8638b6a0d8749d52e66d0207eb161b /lcc/cpp | |
parent | 6d9be1722b2221cae39b389ce218e93d73d99335 (diff) | |
download | ioquake3-aero-45d6a88841f0db650d615522b1f6594ea72ceb7e.tar.gz ioquake3-aero-45d6a88841f0db650d615522b1f6594ea72ceb7e.zip |
* Dewarninged the lcc and q3asm source
* Removed traditional target platforms from the lcc build. This might break
building lcc on Windows using nmake. Submit patches or be quiet :p
* Default target for lcc is now bytecode, so -Wf-target=bytecode is no longer
needed on the lcc command line
git-svn-id: svn://svn.icculus.org/quake3/trunk@132 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'lcc/cpp')
-rw-r--r-- | lcc/cpp/cpp.c | 4 | ||||
-rw-r--r-- | lcc/cpp/getopt.c | 5 | ||||
-rw-r--r-- | lcc/cpp/include.c | 2 | ||||
-rw-r--r-- | lcc/cpp/lex.c | 249 | ||||
-rw-r--r-- | lcc/cpp/macro.c | 8 | ||||
-rw-r--r-- | lcc/cpp/nlist.c | 40 | ||||
-rw-r--r-- | lcc/cpp/tokens.c | 4 |
7 files changed, 156 insertions, 156 deletions
diff --git a/lcc/cpp/cpp.c b/lcc/cpp/cpp.c index 6baa473..6739e4d 100644 --- a/lcc/cpp/cpp.c +++ b/lcc/cpp/cpp.c @@ -100,7 +100,7 @@ control(Tokenrow *trp) error(ERROR, "Unidentifiable control line"); return; /* else empty line */ } - if ((np = lookup(tp, 0))==NULL || (np->flag&ISKW)==0 && !skipping) { + if ((np = lookup(tp, 0))==NULL || ((np->flag&ISKW)==0 && !skipping)) { error(WARNING, "Unknown preprocessor control %t", tp); return; } @@ -215,7 +215,7 @@ control(Tokenrow *trp) tp = trp->bp+2; kline: if (tp+1>=trp->lp || tp->type!=NUMBER || tp+3<trp->lp - || (tp+3==trp->lp && ((tp+1)->type!=STRING)||*(tp+1)->t=='L')){ + || ((tp+3==trp->lp && ((tp+1)->type!=STRING))||*(tp+1)->t=='L')){ error(ERROR, "Syntax error in #line"); return; } diff --git a/lcc/cpp/getopt.c b/lcc/cpp/getopt.c index 07fd798..abcb35f 100644 --- a/lcc/cpp/getopt.c +++ b/lcc/cpp/getopt.c @@ -1,11 +1,11 @@ #include <stdio.h> +#include <string.h> #define EPR fprintf(stderr, #define ERR(str, chr) if(opterr){EPR "%s%c\n", str, chr);} int opterr = 1; int optind = 1; int optopt; char *optarg; -char *strchr(); int getopt (int argc, char *const argv[], const char *opts) @@ -14,7 +14,7 @@ getopt (int argc, char *const argv[], const char *opts) int c; char *cp; - if (sp == 1) + if (sp == 1) { if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0') return -1; @@ -22,6 +22,7 @@ getopt (int argc, char *const argv[], const char *opts) optind++; return -1; } + } optopt = c = argv[optind][sp]; if (c == ':' || (cp=strchr(opts, c)) == 0) { ERR (": illegal option -- ", c); diff --git a/lcc/cpp/include.c b/lcc/cpp/include.c index 72ec8ae..b3757e8 100644 --- a/lcc/cpp/include.c +++ b/lcc/cpp/include.c @@ -59,7 +59,7 @@ doinclude(Tokenrow *trp) if ((fd = open(iname, 0)) >= 0) break; } - if ( Mflag>1 || !angled&&Mflag==1 ) { + if ( Mflag>1 || (!angled&&Mflag==1) ) { write(1,objname,strlen(objname)); write(1,iname,strlen(iname)); write(1,"\n",1); diff --git a/lcc/cpp/lex.c b/lcc/cpp/lex.c index fc4c5db..8030354 100644 --- a/lcc/cpp/lex.c +++ b/lcc/cpp/lex.c @@ -52,183 +52,183 @@ struct fsm { /*const*/ struct fsm fsm[] = { /* start state */ - START, { C_XX }, ACT(UNCLASS,S_SELF), - START, { ' ', '\t', '\v' }, WS1, - START, { C_NUM }, NUM1, - START, { '.' }, NUM3, - START, { C_ALPH }, ID1, - START, { 'L' }, ST1, - START, { '"' }, ST2, - START, { '\'' }, CC1, - START, { '/' }, COM1, - START, { EOFC }, S_EOF, - START, { '\n' }, S_NL, - START, { '-' }, MINUS1, - START, { '+' }, PLUS1, - START, { '<' }, LT1, - START, { '>' }, GT1, - START, { '=' }, ASG1, - START, { '!' }, NOT1, - START, { '&' }, AND1, - START, { '|' }, OR1, - START, { '#' }, SHARP1, - START, { '%' }, PCT1, - START, { '[' }, ACT(SBRA,S_SELF), - START, { ']' }, ACT(SKET,S_SELF), - START, { '(' }, ACT(LP,S_SELF), - START, { ')' }, ACT(RP,S_SELF), - START, { '*' }, STAR1, - START, { ',' }, ACT(COMMA,S_SELF), - START, { '?' }, ACT(QUEST,S_SELF), - START, { ':' }, ACT(COLON,S_SELF), - START, { ';' }, ACT(SEMIC,S_SELF), - START, { '{' }, ACT(CBRA,S_SELF), - START, { '}' }, ACT(CKET,S_SELF), - START, { '~' }, ACT(TILDE,S_SELF), - START, { '^' }, CIRC1, + {START, { C_XX }, ACT(UNCLASS,S_SELF)}, + {START, { ' ', '\t', '\v' }, WS1}, + {START, { C_NUM }, NUM1}, + {START, { '.' }, NUM3}, + {START, { C_ALPH }, ID1}, + {START, { 'L' }, ST1}, + {START, { '"' }, ST2}, + {START, { '\'' }, CC1}, + {START, { '/' }, COM1}, + {START, { EOFC }, S_EOF}, + {START, { '\n' }, S_NL}, + {START, { '-' }, MINUS1}, + {START, { '+' }, PLUS1}, + {START, { '<' }, LT1}, + {START, { '>' }, GT1}, + {START, { '=' }, ASG1}, + {START, { '!' }, NOT1}, + {START, { '&' }, AND1}, + {START, { '|' }, OR1}, + {START, { '#' }, SHARP1}, + {START, { '%' }, PCT1}, + {START, { '[' }, ACT(SBRA,S_SELF)}, + {START, { ']' }, ACT(SKET,S_SELF)}, + {START, { '(' }, ACT(LP,S_SELF)}, + {START, { ')' }, ACT(RP,S_SELF)}, + {START, { '*' }, STAR1}, + {START, { ',' }, ACT(COMMA,S_SELF)}, + {START, { '?' }, ACT(QUEST,S_SELF)}, + {START, { ':' }, ACT(COLON,S_SELF)}, + {START, { ';' }, ACT(SEMIC,S_SELF)}, + {START, { '{' }, ACT(CBRA,S_SELF)}, + {START, { '}' }, ACT(CKET,S_SELF)}, + {START, { '~' }, ACT(TILDE,S_SELF)}, + {START, { '^' }, CIRC1}, /* saw a digit */ - NUM1, { C_XX }, ACT(NUMBER,S_SELFB), - NUM1, { C_NUM, C_ALPH, '.' }, NUM1, - NUM1, { 'E', 'e' }, NUM2, - NUM1, { '_' }, ACT(NUMBER,S_SELFB), + {NUM1, { C_XX }, ACT(NUMBER,S_SELFB)}, + {NUM1, { C_NUM, C_ALPH, '.' }, NUM1}, + {NUM1, { 'E', 'e' }, NUM2}, + {NUM1, { '_' }, ACT(NUMBER,S_SELFB)}, /* saw possible start of exponent, digits-e */ - NUM2, { C_XX }, ACT(NUMBER,S_SELFB), - NUM2, { '+', '-' }, NUM1, - NUM2, { C_NUM, C_ALPH }, NUM1, - NUM2, { '_' }, ACT(NUMBER,S_SELFB), + {NUM2, { C_XX }, ACT(NUMBER,S_SELFB)}, + {NUM2, { '+', '-' }, NUM1}, + {NUM2, { C_NUM, C_ALPH }, NUM1}, + {NUM2, { '_' }, ACT(NUMBER,S_SELFB)}, /* saw a '.', which could be a number or an operator */ - NUM3, { C_XX }, ACT(DOT,S_SELFB), - NUM3, { '.' }, DOTS1, - NUM3, { C_NUM }, NUM1, + {NUM3, { C_XX }, ACT(DOT,S_SELFB)}, + {NUM3, { '.' }, DOTS1}, + {NUM3, { C_NUM }, NUM1}, - DOTS1, { C_XX }, ACT(UNCLASS, S_SELFB), - DOTS1, { C_NUM }, NUM1, - DOTS1, { '.' }, ACT(ELLIPS, S_SELF), + {DOTS1, { C_XX }, ACT(UNCLASS, S_SELFB)}, + {DOTS1, { C_NUM }, NUM1}, + {DOTS1, { '.' }, ACT(ELLIPS, S_SELF)}, /* saw a letter or _ */ - ID1, { C_XX }, ACT(NAME,S_NAME), - ID1, { C_ALPH, C_NUM }, ID1, + {ID1, { C_XX }, ACT(NAME,S_NAME)}, + {ID1, { C_ALPH, C_NUM }, ID1}, /* saw L (start of wide string?) */ - ST1, { C_XX }, ACT(NAME,S_NAME), - ST1, { C_ALPH, C_NUM }, ID1, - ST1, { '"' }, ST2, - ST1, { '\'' }, CC1, + {ST1, { C_XX }, ACT(NAME,S_NAME)}, + {ST1, { C_ALPH, C_NUM }, ID1}, + {ST1, { '"' }, ST2}, + {ST1, { '\'' }, CC1}, /* saw " beginning string */ - ST2, { C_XX }, ST2, - ST2, { '"' }, ACT(STRING, S_SELF), - ST2, { '\\' }, ST3, - ST2, { '\n' }, S_STNL, - ST2, { EOFC }, S_EOFSTR, + {ST2, { C_XX }, ST2}, + {ST2, { '"' }, ACT(STRING, S_SELF)}, + {ST2, { '\\' }, ST3}, + {ST2, { '\n' }, S_STNL}, + {ST2, { EOFC }, S_EOFSTR}, /* saw \ in string */ - ST3, { C_XX }, ST2, - ST3, { '\n' }, S_STNL, - ST3, { EOFC }, S_EOFSTR, + {ST3, { C_XX }, ST2}, + {ST3, { '\n' }, S_STNL}, + {ST3, { EOFC }, S_EOFSTR}, /* saw ' beginning character const */ - CC1, { C_XX }, CC1, - CC1, { '\'' }, ACT(CCON, S_SELF), - CC1, { '\\' }, CC2, - CC1, { '\n' }, S_STNL, - CC1, { EOFC }, S_EOFSTR, + {CC1, { C_XX }, CC1}, + {CC1, { '\'' }, ACT(CCON, S_SELF)}, + {CC1, { '\\' }, CC2}, + {CC1, { '\n' }, S_STNL}, + {CC1, { EOFC }, S_EOFSTR}, /* saw \ in ccon */ - CC2, { C_XX }, CC1, - CC2, { '\n' }, S_STNL, - CC2, { EOFC }, S_EOFSTR, + {CC2, { C_XX }, CC1}, + {CC2, { '\n' }, S_STNL}, + {CC2, { EOFC }, S_EOFSTR}, /* saw /, perhaps start of comment */ - COM1, { C_XX }, ACT(SLASH, S_SELFB), - COM1, { '=' }, ACT(ASSLASH, S_SELF), - COM1, { '*' }, COM2, - COM1, { '/' }, COM4, + {COM1, { C_XX }, ACT(SLASH, S_SELFB)}, + {COM1, { '=' }, ACT(ASSLASH, S_SELF)}, + {COM1, { '*' }, COM2}, + {COM1, { '/' }, COM4}, /* saw / then *, start of comment */ - COM2, { C_XX }, COM2, - COM2, { '\n' }, S_COMNL, - COM2, { '*' }, COM3, - COM2, { EOFC }, S_EOFCOM, + {COM2, { C_XX }, COM2}, + {COM2, { '\n' }, S_COMNL}, + {COM2, { '*' }, COM3}, + {COM2, { EOFC }, S_EOFCOM}, /* saw the * possibly ending a comment */ - COM3, { C_XX }, COM2, - COM3, { '\n' }, S_COMNL, - COM3, { '*' }, COM3, - COM3, { '/' }, S_COMMENT, + {COM3, { C_XX }, COM2}, + {COM3, { '\n' }, S_COMNL}, + {COM3, { '*' }, COM3}, + {COM3, { '/' }, S_COMMENT}, /* // comment */ - COM4, { C_XX }, COM4, - COM4, { '\n' }, S_NL, - COM4, { EOFC }, S_EOFCOM, + {COM4, { C_XX }, COM4}, + {COM4, { '\n' }, S_NL}, + {COM4, { EOFC }, S_EOFCOM}, /* saw white space, eat it up */ - WS1, { C_XX }, S_WS, - WS1, { ' ', '\t', '\v' }, WS1, + {WS1, { C_XX }, S_WS}, + {WS1, { ' ', '\t', '\v' }, WS1}, /* saw -, check --, -=, -> */ - MINUS1, { C_XX }, ACT(MINUS, S_SELFB), - MINUS1, { '-' }, ACT(MMINUS, S_SELF), - MINUS1, { '=' }, ACT(ASMINUS,S_SELF), - MINUS1, { '>' }, ACT(ARROW,S_SELF), + {MINUS1, { C_XX }, ACT(MINUS, S_SELFB)}, + {MINUS1, { '-' }, ACT(MMINUS, S_SELF)}, + {MINUS1, { '=' }, ACT(ASMINUS,S_SELF)}, + {MINUS1, { '>' }, ACT(ARROW,S_SELF)}, /* saw +, check ++, += */ - PLUS1, { C_XX }, ACT(PLUS, S_SELFB), - PLUS1, { '+' }, ACT(PPLUS, S_SELF), - PLUS1, { '=' }, ACT(ASPLUS, S_SELF), + {PLUS1, { C_XX }, ACT(PLUS, S_SELFB)}, + {PLUS1, { '+' }, ACT(PPLUS, S_SELF)}, + {PLUS1, { '=' }, ACT(ASPLUS, S_SELF)}, /* saw <, check <<, <<=, <= */ - LT1, { C_XX }, ACT(LT, S_SELFB), - LT1, { '<' }, LT2, - LT1, { '=' }, ACT(LEQ, S_SELF), - LT2, { C_XX }, ACT(LSH, S_SELFB), - LT2, { '=' }, ACT(ASLSH, S_SELF), + {LT1, { C_XX }, ACT(LT, S_SELFB)}, + {LT1, { '<' }, LT2}, + {LT1, { '=' }, ACT(LEQ, S_SELF)}, + {LT2, { C_XX }, ACT(LSH, S_SELFB)}, + {LT2, { '=' }, ACT(ASLSH, S_SELF)}, /* saw >, check >>, >>=, >= */ - GT1, { C_XX }, ACT(GT, S_SELFB), - GT1, { '>' }, GT2, - GT1, { '=' }, ACT(GEQ, S_SELF), - GT2, { C_XX }, ACT(RSH, S_SELFB), - GT2, { '=' }, ACT(ASRSH, S_SELF), + {GT1, { C_XX }, ACT(GT, S_SELFB)}, + {GT1, { '>' }, GT2}, + {GT1, { '=' }, ACT(GEQ, S_SELF)}, + {GT2, { C_XX }, ACT(RSH, S_SELFB)}, + {GT2, { '=' }, ACT(ASRSH, S_SELF)}, /* = */ - ASG1, { C_XX }, ACT(ASGN, S_SELFB), - ASG1, { '=' }, ACT(EQ, S_SELF), + {ASG1, { C_XX }, ACT(ASGN, S_SELFB)}, + {ASG1, { '=' }, ACT(EQ, S_SELF)}, /* ! */ - NOT1, { C_XX }, ACT(NOT, S_SELFB), - NOT1, { '=' }, ACT(NEQ, S_SELF), + {NOT1, { C_XX }, ACT(NOT, S_SELFB)}, + {NOT1, { '=' }, ACT(NEQ, S_SELF)}, /* & */ - AND1, { C_XX }, ACT(AND, S_SELFB), - AND1, { '&' }, ACT(LAND, S_SELF), - AND1, { '=' }, ACT(ASAND, S_SELF), + {AND1, { C_XX }, ACT(AND, S_SELFB)}, + {AND1, { '&' }, ACT(LAND, S_SELF)}, + {AND1, { '=' }, ACT(ASAND, S_SELF)}, /* | */ - OR1, { C_XX }, ACT(OR, S_SELFB), - OR1, { '|' }, ACT(LOR, S_SELF), - OR1, { '=' }, ACT(ASOR, S_SELF), + {OR1, { C_XX }, ACT(OR, S_SELFB)}, + {OR1, { '|' }, ACT(LOR, S_SELF)}, + {OR1, { '=' }, ACT(ASOR, S_SELF)}, /* # */ - SHARP1, { C_XX }, ACT(SHARP, S_SELFB), - SHARP1, { '#' }, ACT(DSHARP, S_SELF), + {SHARP1, { C_XX }, ACT(SHARP, S_SELFB)}, + {SHARP1, { '#' }, ACT(DSHARP, S_SELF)}, /* % */ - PCT1, { C_XX }, ACT(PCT, S_SELFB), - PCT1, { '=' }, ACT(ASPCT, S_SELF), + {PCT1, { C_XX }, ACT(PCT, S_SELFB)}, + {PCT1, { '=' }, ACT(ASPCT, S_SELF)}, /* * */ - STAR1, { C_XX }, ACT(STAR, S_SELFB), - STAR1, { '=' }, ACT(ASSTAR, S_SELF), + {STAR1, { C_XX }, ACT(STAR, S_SELFB)}, + {STAR1, { '=' }, ACT(ASSTAR, S_SELF)}, /* ^ */ - CIRC1, { C_XX }, ACT(CIRC, S_SELFB), - CIRC1, { '=' }, ACT(ASCIRC, S_SELF), + {CIRC1, { C_XX }, ACT(CIRC, S_SELFB)}, + {CIRC1, { '=' }, ACT(ASCIRC, S_SELF)}, - -1 + {-1} }; /* first index is char, second is state */ @@ -254,7 +254,7 @@ expandlex(void) continue; case C_ALPH: for (j=0; j<=256; j++) - if ('a'<=j&&j<='z' || 'A'<=j&&j<='Z' + if (('a'<=j&&j<='z') || ('A'<=j&&j<='Z') || j=='_') bigfsm[j][fp->state] = nstate; continue; @@ -305,7 +305,6 @@ gettokens(Tokenrow *trp, int reset) int runelen; Source *s = cursource; int nmac = 0; - extern char outbuf[]; tp = trp->lp; ip = s->inp; diff --git a/lcc/cpp/macro.c b/lcc/cpp/macro.c index 55b4b2c..49d1129 100644 --- a/lcc/cpp/macro.c +++ b/lcc/cpp/macro.c @@ -71,7 +71,7 @@ dodefine(Tokenrow *trp) if (np->flag&ISDEFINED) { if (comparetokens(def, np->vp) || (np->ap==NULL) != (args==NULL) - || np->ap && comparetokens(args, np->ap)) + || (np->ap && comparetokens(args, np->ap))) error(ERROR, "Macro redefinition of %t", trp->bp+2); } if (args) { @@ -141,7 +141,7 @@ expandrow(Tokenrow *trp, char *flag) || quicklook(tp->t[0], tp->len>1?tp->t[1]:0)==0 || (np = lookup(tp, 0))==NULL || (np->flag&(ISDEFINED|ISMAC))==0 - || tp->hideset && checkhideset(tp->hideset, np)) { + || (tp->hideset && checkhideset(tp->hideset, np))) { tp++; continue; } @@ -300,7 +300,7 @@ gatherargs(Tokenrow *trp, Tokenrow **atr, int *narg) parens--; if (lp->type==DSHARP) lp->type = DSHARP1; /* ## not special in arg */ - if (lp->type==COMMA && parens==0 || parens<0 && (lp-1)->type!=LP) { + if ((lp->type==COMMA && parens==0) || (parens<0 && (lp-1)->type!=LP)) { if (*narg>=NARG-1) error(FATAL, "Sorry, too many macro arguments"); ttr.bp = ttr.tp = bp; @@ -339,7 +339,7 @@ substargs(Nlist *np, Tokenrow *rtr, Tokenrow **atr) if (rtr->tp->type==NAME && (argno = lookuparg(np, rtr->tp)) >= 0) { if ((rtr->tp+1)->type==DSHARP - || rtr->tp!=rtr->bp && (rtr->tp-1)->type==DSHARP) + || (rtr->tp!=rtr->bp && (rtr->tp-1)->type==DSHARP)) insertrow(rtr, 1, atr[argno]); else { copytokenrow(&tatr, atr[argno]); diff --git a/lcc/cpp/nlist.c b/lcc/cpp/nlist.c index 33c2db9..d857dfa 100644 --- a/lcc/cpp/nlist.c +++ b/lcc/cpp/nlist.c @@ -20,26 +20,26 @@ struct kwtab { int val; int flag; } kwtab[] = { - "if", KIF, ISKW, - "ifdef", KIFDEF, ISKW, - "ifndef", KIFNDEF, ISKW, - "elif", KELIF, ISKW, - "else", KELSE, ISKW, - "endif", KENDIF, ISKW, - "include", KINCLUDE, ISKW, - "define", KDEFINE, ISKW, - "undef", KUNDEF, ISKW, - "line", KLINE, ISKW, - "error", KERROR, ISKW, - "pragma", KPRAGMA, ISKW, - "eval", KEVAL, ISKW, - "defined", KDEFINED, ISDEFINED+ISUNCHANGE, - "__LINE__", KLINENO, ISMAC+ISUNCHANGE, - "__FILE__", KFILE, ISMAC+ISUNCHANGE, - "__DATE__", KDATE, ISMAC+ISUNCHANGE, - "__TIME__", KTIME, ISMAC+ISUNCHANGE, - "__STDC__", KSTDC, ISUNCHANGE, - NULL + {"if", KIF, ISKW}, + {"ifdef", KIFDEF, ISKW}, + {"ifndef", KIFNDEF, ISKW}, + {"elif", KELIF, ISKW}, + {"else", KELSE, ISKW}, + {"endif", KENDIF, ISKW}, + {"include", KINCLUDE, ISKW}, + {"define", KDEFINE, ISKW}, + {"undef", KUNDEF, ISKW}, + {"line", KLINE, ISKW}, + {"error", KERROR, ISKW}, + {"pragma", KPRAGMA, ISKW}, + {"eval", KEVAL, ISKW}, + {"defined", KDEFINED, ISDEFINED+ISUNCHANGE}, + {"__LINE__", KLINENO, ISMAC+ISUNCHANGE}, + {"__FILE__", KFILE, ISMAC+ISUNCHANGE}, + {"__DATE__", KDATE, ISMAC+ISUNCHANGE}, + {"__TIME__", KTIME, ISMAC+ISUNCHANGE}, + {"__STDC__", KSTDC, ISUNCHANGE}, + {NULL} }; unsigned long namebit[077+1]; diff --git a/lcc/cpp/tokens.c b/lcc/cpp/tokens.c index ebbd186..147569b 100644 --- a/lcc/cpp/tokens.c +++ b/lcc/cpp/tokens.c @@ -154,14 +154,14 @@ makespace(Tokenrow *trp) return; if (tp->wslen) { if (tp->flag&XPWS - && (wstab[tp->type] || trp->tp>trp->bp && wstab[(tp-1)->type])) { + && (wstab[tp->type] || (trp->tp>trp->bp && wstab[(tp-1)->type]))) { tp->wslen = 0; return; } tp->t[-1] = ' '; return; } - if (wstab[tp->type] || trp->tp>trp->bp && wstab[(tp-1)->type]) + if (wstab[tp->type] || (trp->tp>trp->bp && wstab[(tp-1)->type])) return; tt = newstring(tp->t, tp->len, 1); *tt++ = ' '; |