mirror of
https://github.com/openbsd/src.git
synced 2024-12-22 07:27:59 -08:00
update tradcpp to 0.5.3
This commit is contained in:
parent
f36af845e3
commit
88157d21ef
@ -124,6 +124,22 @@
|
||||
#define CONFIG_CPU "__ppc64__"
|
||||
#elif defined(__ARM__)
|
||||
#define CONFIG_CPU "__ARM__"
|
||||
#elif defined(__AARCH64__)
|
||||
#define CONFIG_CPU "__AARCH64__"
|
||||
#elif defined(__aarch64__)
|
||||
#define CONFIG_CPU "__aarch64__"
|
||||
#elif defined(__RISCV__)
|
||||
#define CONFIG_CPU "__RISCV__"
|
||||
#elif defined(__riscv__)
|
||||
#define CONFIG_CPU "__riscv__"
|
||||
#elif defined(__RISCV64__)
|
||||
#define CONFIG_CPU "__RISCV64__"
|
||||
#elif defined(__riscv64__)
|
||||
#define CONFIG_CPU "__riscv64__"
|
||||
#elif defined(__riscv64)
|
||||
#define CONFIG_CPU "__riscv64"
|
||||
#elif defined(__ia64__)
|
||||
#define CONFIG_CPU "__ia64__"
|
||||
#else
|
||||
/* let it go */
|
||||
#endif
|
||||
|
@ -114,7 +114,7 @@ oneword(const char *what, struct place *p2, char *line)
|
||||
|
||||
pos = strcspn(line, ws);
|
||||
if (line[pos] != '\0') {
|
||||
p2->column += pos;
|
||||
place_addcolumns(p2, pos);
|
||||
complain(p2, "Garbage after %s argument", what);
|
||||
complain_fail();
|
||||
line[pos] = '\0';
|
||||
@ -348,13 +348,13 @@ d_define(struct lineplace *lp, struct place *p2, char *line)
|
||||
argpos = pos;
|
||||
pos = pos + strcspn(line+pos, "()");
|
||||
if (line[pos] == '(') {
|
||||
p2->column += pos;
|
||||
place_addcolumns(p2, pos);
|
||||
complain(p2, "Left parenthesis in macro parameters");
|
||||
complain_fail();
|
||||
return;
|
||||
}
|
||||
if (line[pos] != ')') {
|
||||
p2->column += pos;
|
||||
place_addcolumns(p2, pos);
|
||||
complain(p2, "Unclosed macro parameter list");
|
||||
complain_fail();
|
||||
return;
|
||||
@ -378,10 +378,10 @@ d_define(struct lineplace *lp, struct place *p2, char *line)
|
||||
pos += strspn(line+pos, ws);
|
||||
|
||||
p3 = *p2;
|
||||
p3.column += argpos;
|
||||
place_addcolumns(&p3, argpos);
|
||||
|
||||
p4 = *p2;
|
||||
p4.column += pos;
|
||||
place_addcolumns(&p4, pos);
|
||||
|
||||
if (argpos) {
|
||||
debuglog(&lp->current, "Defining %s()", line);
|
||||
@ -490,7 +490,8 @@ d_line(struct lineplace *lp, struct place *p2, char *line)
|
||||
errno = 0;
|
||||
val = strtoul(text, &moretext, 10);
|
||||
if (errno) {
|
||||
complain(&lp->current, "No line number in #line directive");
|
||||
complain(&lp->current,
|
||||
"Invalid line number in #line directive");
|
||||
goto fail;
|
||||
}
|
||||
#if UINT_MAX < ULONG_MAX
|
||||
@ -502,7 +503,7 @@ d_line(struct lineplace *lp, struct place *p2, char *line)
|
||||
#endif
|
||||
moretext += strspn(moretext, ws);
|
||||
moretextlen = strlen(moretext);
|
||||
lp->current.column += (moretext - text);
|
||||
place_addcolumns(&lp->current, moretext - text);
|
||||
|
||||
if (moretextlen > 2 &&
|
||||
moretext[0] == '"' && moretext[moretextlen-1] == '"') {
|
||||
@ -610,7 +611,7 @@ directive_gotdirective(struct lineplace *lp, char *line)
|
||||
return;
|
||||
}
|
||||
skip = len + strspn(line+len, ws);
|
||||
p2.column += skip;
|
||||
place_addcolumns(&p2, skip);
|
||||
line += skip;
|
||||
|
||||
len = strlen(line);
|
||||
@ -667,10 +668,10 @@ directive_scancomments(const struct lineplace *lp, char *line, size_t len)
|
||||
pos++;
|
||||
}
|
||||
if (line[pos] == '\n') {
|
||||
p2.line++;
|
||||
place_addlines(&p2, 1);
|
||||
p2.column = 0;
|
||||
} else {
|
||||
p2.column++;
|
||||
place_addcolumns(&p2, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -692,13 +693,13 @@ directive_gotline(struct lineplace *lp, char *line, size_t len)
|
||||
if (len > 0 && line[0] == '#') {
|
||||
skip = 1 + strspn(line + 1, ws);
|
||||
assert(skip <= len);
|
||||
lp->current.column += skip;
|
||||
place_addcolumns(&lp->current, skip);
|
||||
assert(line[len] == '\0');
|
||||
directive_gotdirective(lp, line+skip /*, length = len-skip */);
|
||||
lp->current.column += len-skip;
|
||||
place_addcolumns(&lp->current, len-skip);
|
||||
} else if (ifstate->curtrue) {
|
||||
macro_sendline(&lp->current, line, len);
|
||||
lp->current.column += len;
|
||||
place_addcolumns(&lp->current, len);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -708,29 +708,29 @@ tokenize(struct place *p, char *expr)
|
||||
while (expr[pos] != '\0') {
|
||||
len = strspn(expr+pos, ws);
|
||||
pos += len;
|
||||
p->column += len;
|
||||
place_addcolumns(p, len);
|
||||
/* trailing whitespace is supposed to have been pruned */
|
||||
assert(expr[pos] != '\0');
|
||||
if (check_word(p, expr, pos, &len)) {
|
||||
pos += len;
|
||||
p->column += len;
|
||||
place_addcolumns(p, len);
|
||||
continue;
|
||||
}
|
||||
if (check_tokens_2(p, expr, pos)) {
|
||||
pos += 2;
|
||||
p->column += 2;
|
||||
place_addcolumns(p, 2);
|
||||
continue;
|
||||
}
|
||||
if (check_tokens_1(p, expr, pos)) {
|
||||
pos++;
|
||||
p->column++;
|
||||
place_addcolumns(p, 1);
|
||||
continue;
|
||||
}
|
||||
complain(p, "Invalid character %u in #if-expression",
|
||||
(unsigned char)expr[pos]);
|
||||
complain_fail();
|
||||
pos++;
|
||||
p->column++;
|
||||
place_addcolumns(p, 1);
|
||||
}
|
||||
token(p, T_EOF, 0);
|
||||
}
|
||||
|
@ -163,6 +163,10 @@ countnls(const char *buf, size_t start, size_t limit)
|
||||
for (i=start; i<limit; i++) {
|
||||
if (buf[i] == '\n') {
|
||||
count++;
|
||||
if (count == 0) {
|
||||
/* just return the max and error downstream */
|
||||
return count - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return count;
|
||||
@ -209,6 +213,12 @@ file_read(const struct placefile *pf, int fd, const char *name, bool toplevel)
|
||||
/* need bigger buffer */
|
||||
buf = dorealloc(buf, bufmax, bufmax*2);
|
||||
bufmax = bufmax*2;
|
||||
/* just in case someone's screwing around */
|
||||
if (bufmax > 0xffffffff) {
|
||||
complain(&places.current,
|
||||
"Input line too long");
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
if (ateof) {
|
||||
@ -231,7 +241,7 @@ file_read(const struct placefile *pf, int fd, const char *name, bool toplevel)
|
||||
/* eof in middle of line */
|
||||
ateof = true;
|
||||
ptmp = places.current;
|
||||
ptmp.column += bufend - linestart;
|
||||
place_addcolumns(&ptmp, bufend - linestart);
|
||||
if (buf[bufend - 1] == '\n') {
|
||||
complain(&ptmp, "Unclosed comment");
|
||||
complain_fail();
|
||||
@ -257,7 +267,7 @@ file_read(const struct placefile *pf, int fd, const char *name, bool toplevel)
|
||||
assert(buf[lineend] == '\n');
|
||||
buf[lineend] = '\0';
|
||||
nextlinestart = lineend+1;
|
||||
places.nextline.line++;
|
||||
place_addlines(&places.nextline, 1);
|
||||
|
||||
/* check for CR/NL */
|
||||
if (lineend > 0 && buf[lineend-1] == '\r') {
|
||||
@ -284,7 +294,8 @@ file_read(const struct placefile *pf, int fd, const char *name, bool toplevel)
|
||||
assert(buf[lineend] == '\0');
|
||||
|
||||
/* count how many commented-out newlines we swallowed */
|
||||
places.nextline.line += countnls(buf, linestart, lineend);
|
||||
place_addlines(&places.nextline,
|
||||
countnls(buf, linestart, lineend));
|
||||
|
||||
/* process the line (even if it's empty) */
|
||||
directive_gotline(&places, buf+linestart, lineend-linestart);
|
||||
|
@ -523,7 +523,7 @@ macro_parse_parameters(struct macro *m, struct place *p, const char *params)
|
||||
while (params != NULL) {
|
||||
len = strspn(params, ws);
|
||||
params += len;
|
||||
p->column += len;
|
||||
place_addcolumns(p, len);
|
||||
s = strchr(params, ',');
|
||||
if (s) {
|
||||
len = s-params;
|
||||
@ -541,7 +541,7 @@ macro_parse_parameters(struct macro *m, struct place *p, const char *params)
|
||||
stringarray_add(&m->params, param, NULL);
|
||||
}
|
||||
params = s;
|
||||
p->column += len;
|
||||
place_addcolumns(p, len);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@ commandline_def(const struct place *p, char *str)
|
||||
|
||||
if (val) {
|
||||
p2 = *p;
|
||||
p2.column += strlen(str);
|
||||
place_addcolumns(&p2, strlen(str));
|
||||
} else {
|
||||
place_setbuiltin(&p2, 1);
|
||||
}
|
||||
|
@ -193,6 +193,34 @@ place_setfilestart(struct place *p, const struct placefile *pf)
|
||||
p->column = 1;
|
||||
}
|
||||
|
||||
void
|
||||
place_addcolumns(struct place *p, unsigned cols)
|
||||
{
|
||||
unsigned newcol;
|
||||
|
||||
newcol = p->column + cols;
|
||||
if (newcol < p->column) {
|
||||
/* overflow (use the old place to complain) */
|
||||
complain(p, "Column numbering overflow");
|
||||
die();
|
||||
}
|
||||
p->column = newcol;
|
||||
}
|
||||
|
||||
void
|
||||
place_addlines(struct place *p, unsigned lines)
|
||||
{
|
||||
unsigned nextline;
|
||||
|
||||
nextline = p->line + lines;
|
||||
if (nextline < p->line) {
|
||||
/* overflow (use the old place to complain) */
|
||||
complain(p, "Line numbering overflow");
|
||||
die();
|
||||
}
|
||||
p->line = nextline;
|
||||
}
|
||||
|
||||
const char *
|
||||
place_getname(const struct place *p)
|
||||
{
|
||||
|
@ -53,6 +53,9 @@ void place_setbuiltin(struct place *p, unsigned num);
|
||||
void place_setcommandline(struct place *p, unsigned word, unsigned column);
|
||||
void place_setfilestart(struct place *p, const struct placefile *pf);
|
||||
|
||||
void place_addcolumns(struct place *, unsigned cols);
|
||||
void place_addlines(struct place *, unsigned lines);
|
||||
|
||||
const char *place_getname(const struct place *);
|
||||
const char *place_getparsedir(const struct place *incplace);
|
||||
bool place_eq(const struct place *, const struct place *);
|
||||
|
@ -29,5 +29,5 @@
|
||||
|
||||
#define VERSION_MAJOR "0"
|
||||
#define VERSION_MINOR "5"
|
||||
#define VERSION_STRING "0.5.2"
|
||||
#define VERSION_LONG "NetBSD tradcpp 0.5.2"
|
||||
#define VERSION_STRING "0.5.3"
|
||||
#define VERSION_LONG "NetBSD tradcpp 0.5.3"
|
||||
|
Loading…
Reference in New Issue
Block a user