aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/cpp')
-rw-r--r--lcc/cpp/cpp.c4
-rw-r--r--lcc/cpp/getopt.c5
-rw-r--r--lcc/cpp/include.c2
-rw-r--r--lcc/cpp/lex.c249
-rw-r--r--lcc/cpp/macro.c8
-rw-r--r--lcc/cpp/nlist.c40
-rw-r--r--lcc/cpp/tokens.c4
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++ = ' ';