2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-31 22:35:10 +00:00

Move LEXTRACE macro to toke.h so we can use it in yyerror().

This commit is contained in:
Todd C. Miller
2011-03-21 12:39:06 -04:00
parent a27b3f3407
commit edfb5cd7a2
5 changed files with 3692 additions and 166 deletions

View File

@@ -63,6 +63,7 @@
#include "sudoers.h" /* XXX */ #include "sudoers.h" /* XXX */
#include "parse.h" #include "parse.h"
#include "toke.h"
/* /*
* We must define SIZE_MAX for yacc's skeleton.c. * We must define SIZE_MAX for yacc's skeleton.c.
@@ -108,17 +109,15 @@ yyerror(const char *s)
errorlineno = sudolineno ? sudolineno - 1 : 0; errorlineno = sudolineno ? sudolineno - 1 : 0;
errorfile = estrdup(sudoers); errorfile = estrdup(sudoers);
} }
if (verbose && s != NULL) { if (trace_print != NULL) {
#ifndef TRACELEXER LEXTRACE("<*> ");
} else if (verbose && s != NULL) {
warningx(">>> %s: %s near line %d <<<", sudoers, s, warningx(">>> %s: %s near line %d <<<", sudoers, s,
sudolineno ? sudolineno - 1 : 0); sudolineno ? sudolineno - 1 : 0);
#else
fputs("<*> ", stderr);
#endif
} }
parse_error = TRUE; parse_error = TRUE;
} }
#line 111 "gram.y" #line 110 "gram.y"
#ifndef YYSTYPE_DEFINED #ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED #define YYSTYPE_DEFINED
typedef union { typedef union {
@@ -134,7 +133,7 @@ typedef union {
int tok; int tok;
} YYSTYPE; } YYSTYPE;
#endif /* YYSTYPE_DEFINED */ #endif /* YYSTYPE_DEFINED */
#line 137 "y.tab.c" #line 136 "y.tab.c"
#define COMMAND 257 #define COMMAND 257
#define ALIAS 258 #define ALIAS 258
#define DEFVAR 259 #define DEFVAR 259
@@ -632,7 +631,7 @@ short *yyss;
short *yysslim; short *yysslim;
YYSTYPE *yyvs; YYSTYPE *yyvs;
int yystacksize; int yystacksize;
#line 605 "gram.y" #line 604 "gram.y"
static struct defaults * static struct defaults *
new_default(char *var, char *val, int op) new_default(char *var, char *val, int op)
{ {
@@ -811,7 +810,7 @@ init_parser(const char *path, int quiet)
sudolineno = 1; sudolineno = 1;
verbose = !quiet; verbose = !quiet;
} }
#line 762 "y.tab.c" #line 761 "y.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */
#if defined(__cplusplus) || defined(__STDC__) #if defined(__cplusplus) || defined(__STDC__)
static int yygrowstack(void) static int yygrowstack(void)
@@ -1017,127 +1016,127 @@ yyreduce:
switch (yyn) switch (yyn)
{ {
case 1: case 1:
#line 186 "gram.y" #line 185 "gram.y"
{ ; } { ; }
break; break;
case 5: case 5:
#line 194 "gram.y" #line 193 "gram.y"
{ {
; ;
} }
break; break;
case 6: case 6:
#line 197 "gram.y" #line 196 "gram.y"
{ {
yyerrok; yyerrok;
} }
break; break;
case 7: case 7:
#line 200 "gram.y" #line 199 "gram.y"
{ {
add_userspec(yyvsp[-1].member, yyvsp[0].privilege); add_userspec(yyvsp[-1].member, yyvsp[0].privilege);
} }
break; break;
case 8: case 8:
#line 203 "gram.y" #line 202 "gram.y"
{ {
; ;
} }
break; break;
case 9: case 9:
#line 206 "gram.y" #line 205 "gram.y"
{ {
; ;
} }
break; break;
case 10: case 10:
#line 209 "gram.y" #line 208 "gram.y"
{ {
; ;
} }
break; break;
case 11: case 11:
#line 212 "gram.y" #line 211 "gram.y"
{ {
; ;
} }
break; break;
case 12: case 12:
#line 215 "gram.y" #line 214 "gram.y"
{ {
add_defaults(DEFAULTS, NULL, yyvsp[0].defaults); add_defaults(DEFAULTS, NULL, yyvsp[0].defaults);
} }
break; break;
case 13: case 13:
#line 218 "gram.y" #line 217 "gram.y"
{ {
add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults); add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults);
} }
break; break;
case 14: case 14:
#line 221 "gram.y" #line 220 "gram.y"
{ {
add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults); add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults);
} }
break; break;
case 15: case 15:
#line 224 "gram.y" #line 223 "gram.y"
{ {
add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults); add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults);
} }
break; break;
case 16: case 16:
#line 227 "gram.y" #line 226 "gram.y"
{ {
add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults); add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults);
} }
break; break;
case 18: case 18:
#line 233 "gram.y" #line 232 "gram.y"
{ {
list_append(yyvsp[-2].defaults, yyvsp[0].defaults); list_append(yyvsp[-2].defaults, yyvsp[0].defaults);
yyval.defaults = yyvsp[-2].defaults; yyval.defaults = yyvsp[-2].defaults;
} }
break; break;
case 19: case 19:
#line 239 "gram.y" #line 238 "gram.y"
{ {
yyval.defaults = new_default(yyvsp[0].string, NULL, TRUE); yyval.defaults = new_default(yyvsp[0].string, NULL, TRUE);
} }
break; break;
case 20: case 20:
#line 242 "gram.y" #line 241 "gram.y"
{ {
yyval.defaults = new_default(yyvsp[0].string, NULL, FALSE); yyval.defaults = new_default(yyvsp[0].string, NULL, FALSE);
} }
break; break;
case 21: case 21:
#line 245 "gram.y" #line 244 "gram.y"
{ {
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, TRUE); yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, TRUE);
} }
break; break;
case 22: case 22:
#line 248 "gram.y" #line 247 "gram.y"
{ {
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+'); yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+');
} }
break; break;
case 23: case 23:
#line 251 "gram.y" #line 250 "gram.y"
{ {
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-'); yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-');
} }
break; break;
case 25: case 25:
#line 257 "gram.y" #line 256 "gram.y"
{ {
list_append(yyvsp[-2].privilege, yyvsp[0].privilege); list_append(yyvsp[-2].privilege, yyvsp[0].privilege);
yyval.privilege = yyvsp[-2].privilege; yyval.privilege = yyvsp[-2].privilege;
} }
break; break;
case 26: case 26:
#line 263 "gram.y" #line 262 "gram.y"
{ {
struct privilege *p = emalloc(sizeof(*p)); struct privilege *p = emalloc(sizeof(*p));
list2tq(&p->hostlist, yyvsp[-2].member); list2tq(&p->hostlist, yyvsp[-2].member);
@@ -1148,51 +1147,51 @@ case 26:
} }
break; break;
case 27: case 27:
#line 273 "gram.y" #line 272 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE; yyval.member->negated = FALSE;
} }
break; break;
case 28: case 28:
#line 277 "gram.y" #line 276 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE; yyval.member->negated = TRUE;
} }
break; break;
case 29: case 29:
#line 283 "gram.y" #line 282 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, ALIAS); yyval.member = new_member(yyvsp[0].string, ALIAS);
} }
break; break;
case 30: case 30:
#line 286 "gram.y" #line 285 "gram.y"
{ {
yyval.member = new_member(NULL, ALL); yyval.member = new_member(NULL, ALL);
} }
break; break;
case 31: case 31:
#line 289 "gram.y" #line 288 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, NETGROUP); yyval.member = new_member(yyvsp[0].string, NETGROUP);
} }
break; break;
case 32: case 32:
#line 292 "gram.y" #line 291 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, NTWKADDR); yyval.member = new_member(yyvsp[0].string, NTWKADDR);
} }
break; break;
case 33: case 33:
#line 295 "gram.y" #line 294 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, WORD); yyval.member = new_member(yyvsp[0].string, WORD);
} }
break; break;
case 35: case 35:
#line 301 "gram.y" #line 300 "gram.y"
{ {
list_append(yyvsp[-2].cmndspec, yyvsp[0].cmndspec); list_append(yyvsp[-2].cmndspec, yyvsp[0].cmndspec);
#ifdef HAVE_SELINUX #ifdef HAVE_SELINUX
@@ -1225,7 +1224,7 @@ case 35:
} }
break; break;
case 36: case 36:
#line 333 "gram.y" #line 332 "gram.y"
{ {
struct cmndspec *cs = emalloc(sizeof(*cs)); struct cmndspec *cs = emalloc(sizeof(*cs));
if (yyvsp[-3].runas != NULL) { if (yyvsp[-3].runas != NULL) {
@@ -1252,80 +1251,80 @@ case 36:
} }
break; break;
case 37: case 37:
#line 359 "gram.y" #line 358 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE; yyval.member->negated = FALSE;
} }
break; break;
case 38: case 38:
#line 363 "gram.y" #line 362 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE; yyval.member->negated = TRUE;
} }
break; break;
case 39: case 39:
#line 369 "gram.y" #line 368 "gram.y"
{ {
yyval.string = yyvsp[0].string; yyval.string = yyvsp[0].string;
} }
break; break;
case 40: case 40:
#line 374 "gram.y" #line 373 "gram.y"
{ {
yyval.string = yyvsp[0].string; yyval.string = yyvsp[0].string;
} }
break; break;
case 41: case 41:
#line 379 "gram.y" #line 378 "gram.y"
{ {
yyval.seinfo.role = NULL; yyval.seinfo.role = NULL;
yyval.seinfo.type = NULL; yyval.seinfo.type = NULL;
} }
break; break;
case 42: case 42:
#line 383 "gram.y" #line 382 "gram.y"
{ {
yyval.seinfo.role = yyvsp[0].string; yyval.seinfo.role = yyvsp[0].string;
yyval.seinfo.type = NULL; yyval.seinfo.type = NULL;
} }
break; break;
case 43: case 43:
#line 387 "gram.y" #line 386 "gram.y"
{ {
yyval.seinfo.type = yyvsp[0].string; yyval.seinfo.type = yyvsp[0].string;
yyval.seinfo.role = NULL; yyval.seinfo.role = NULL;
} }
break; break;
case 44: case 44:
#line 391 "gram.y" #line 390 "gram.y"
{ {
yyval.seinfo.role = yyvsp[-1].string; yyval.seinfo.role = yyvsp[-1].string;
yyval.seinfo.type = yyvsp[0].string; yyval.seinfo.type = yyvsp[0].string;
} }
break; break;
case 45: case 45:
#line 395 "gram.y" #line 394 "gram.y"
{ {
yyval.seinfo.type = yyvsp[-1].string; yyval.seinfo.type = yyvsp[-1].string;
yyval.seinfo.role = yyvsp[0].string; yyval.seinfo.role = yyvsp[0].string;
} }
break; break;
case 46: case 46:
#line 401 "gram.y" #line 400 "gram.y"
{ {
yyval.runas = NULL; yyval.runas = NULL;
} }
break; break;
case 47: case 47:
#line 404 "gram.y" #line 403 "gram.y"
{ {
yyval.runas = yyvsp[-1].runas; yyval.runas = yyvsp[-1].runas;
} }
break; break;
case 48: case 48:
#line 409 "gram.y" #line 408 "gram.y"
{ {
yyval.runas = emalloc(sizeof(struct runascontainer)); yyval.runas = emalloc(sizeof(struct runascontainer));
yyval.runas->runasusers = yyvsp[0].member; yyval.runas->runasusers = yyvsp[0].member;
@@ -1333,7 +1332,7 @@ case 48:
} }
break; break;
case 49: case 49:
#line 414 "gram.y" #line 413 "gram.y"
{ {
yyval.runas = emalloc(sizeof(struct runascontainer)); yyval.runas = emalloc(sizeof(struct runascontainer));
yyval.runas->runasusers = yyvsp[-2].member; yyval.runas->runasusers = yyvsp[-2].member;
@@ -1341,7 +1340,7 @@ case 49:
} }
break; break;
case 50: case 50:
#line 419 "gram.y" #line 418 "gram.y"
{ {
yyval.runas = emalloc(sizeof(struct runascontainer)); yyval.runas = emalloc(sizeof(struct runascontainer));
yyval.runas->runasusers = NULL; yyval.runas->runasusers = NULL;
@@ -1349,86 +1348,86 @@ case 50:
} }
break; break;
case 51: case 51:
#line 426 "gram.y" #line 425 "gram.y"
{ {
yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv = yyval.tag.nopasswd = yyval.tag.noexec = yyval.tag.setenv =
yyval.tag.log_input = yyval.tag.log_output = UNSPEC; yyval.tag.log_input = yyval.tag.log_output = UNSPEC;
} }
break; break;
case 52: case 52:
#line 430 "gram.y" #line 429 "gram.y"
{ {
yyval.tag.nopasswd = TRUE; yyval.tag.nopasswd = TRUE;
} }
break; break;
case 53: case 53:
#line 433 "gram.y" #line 432 "gram.y"
{ {
yyval.tag.nopasswd = FALSE; yyval.tag.nopasswd = FALSE;
} }
break; break;
case 54: case 54:
#line 436 "gram.y" #line 435 "gram.y"
{ {
yyval.tag.noexec = TRUE; yyval.tag.noexec = TRUE;
} }
break; break;
case 55: case 55:
#line 439 "gram.y" #line 438 "gram.y"
{ {
yyval.tag.noexec = FALSE; yyval.tag.noexec = FALSE;
} }
break; break;
case 56: case 56:
#line 442 "gram.y" #line 441 "gram.y"
{ {
yyval.tag.setenv = TRUE; yyval.tag.setenv = TRUE;
} }
break; break;
case 57: case 57:
#line 445 "gram.y" #line 444 "gram.y"
{ {
yyval.tag.setenv = FALSE; yyval.tag.setenv = FALSE;
} }
break; break;
case 58: case 58:
#line 448 "gram.y" #line 447 "gram.y"
{ {
yyval.tag.log_input = TRUE; yyval.tag.log_input = TRUE;
} }
break; break;
case 59: case 59:
#line 451 "gram.y" #line 450 "gram.y"
{ {
yyval.tag.log_input = FALSE; yyval.tag.log_input = FALSE;
} }
break; break;
case 60: case 60:
#line 454 "gram.y" #line 453 "gram.y"
{ {
yyval.tag.log_output = TRUE; yyval.tag.log_output = TRUE;
} }
break; break;
case 61: case 61:
#line 457 "gram.y" #line 456 "gram.y"
{ {
yyval.tag.log_output = FALSE; yyval.tag.log_output = FALSE;
} }
break; break;
case 62: case 62:
#line 462 "gram.y" #line 461 "gram.y"
{ {
yyval.member = new_member(NULL, ALL); yyval.member = new_member(NULL, ALL);
} }
break; break;
case 63: case 63:
#line 465 "gram.y" #line 464 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, ALIAS); yyval.member = new_member(yyvsp[0].string, ALIAS);
} }
break; break;
case 64: case 64:
#line 468 "gram.y" #line 467 "gram.y"
{ {
struct sudo_command *c = emalloc(sizeof(*c)); struct sudo_command *c = emalloc(sizeof(*c));
c->cmnd = yyvsp[0].command.cmnd; c->cmnd = yyvsp[0].command.cmnd;
@@ -1437,7 +1436,7 @@ case 64:
} }
break; break;
case 67: case 67:
#line 480 "gram.y" #line 479 "gram.y"
{ {
char *s; char *s;
if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) { if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) {
@@ -1447,14 +1446,14 @@ case 67:
} }
break; break;
case 69: case 69:
#line 490 "gram.y" #line 489 "gram.y"
{ {
list_append(yyvsp[-2].member, yyvsp[0].member); list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member; yyval.member = yyvsp[-2].member;
} }
break; break;
case 72: case 72:
#line 500 "gram.y" #line 499 "gram.y"
{ {
char *s; char *s;
if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) { if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) {
@@ -1464,14 +1463,14 @@ case 72:
} }
break; break;
case 74: case 74:
#line 510 "gram.y" #line 509 "gram.y"
{ {
list_append(yyvsp[-2].member, yyvsp[0].member); list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member; yyval.member = yyvsp[-2].member;
} }
break; break;
case 77: case 77:
#line 520 "gram.y" #line 519 "gram.y"
{ {
char *s; char *s;
if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) { if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) {
@@ -1481,7 +1480,7 @@ case 77:
} }
break; break;
case 80: case 80:
#line 533 "gram.y" #line 532 "gram.y"
{ {
char *s; char *s;
if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) { if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) {
@@ -1491,96 +1490,96 @@ case 80:
} }
break; break;
case 82: case 82:
#line 543 "gram.y" #line 542 "gram.y"
{ {
list_append(yyvsp[-2].member, yyvsp[0].member); list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member; yyval.member = yyvsp[-2].member;
} }
break; break;
case 83: case 83:
#line 549 "gram.y" #line 548 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE; yyval.member->negated = FALSE;
} }
break; break;
case 84: case 84:
#line 553 "gram.y" #line 552 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE; yyval.member->negated = TRUE;
} }
break; break;
case 85: case 85:
#line 559 "gram.y" #line 558 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, ALIAS); yyval.member = new_member(yyvsp[0].string, ALIAS);
} }
break; break;
case 86: case 86:
#line 562 "gram.y" #line 561 "gram.y"
{ {
yyval.member = new_member(NULL, ALL); yyval.member = new_member(NULL, ALL);
} }
break; break;
case 87: case 87:
#line 565 "gram.y" #line 564 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, NETGROUP); yyval.member = new_member(yyvsp[0].string, NETGROUP);
} }
break; break;
case 88: case 88:
#line 568 "gram.y" #line 567 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, USERGROUP); yyval.member = new_member(yyvsp[0].string, USERGROUP);
} }
break; break;
case 89: case 89:
#line 571 "gram.y" #line 570 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, WORD); yyval.member = new_member(yyvsp[0].string, WORD);
} }
break; break;
case 91: case 91:
#line 577 "gram.y" #line 576 "gram.y"
{ {
list_append(yyvsp[-2].member, yyvsp[0].member); list_append(yyvsp[-2].member, yyvsp[0].member);
yyval.member = yyvsp[-2].member; yyval.member = yyvsp[-2].member;
} }
break; break;
case 92: case 92:
#line 583 "gram.y" #line 582 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = FALSE; yyval.member->negated = FALSE;
} }
break; break;
case 93: case 93:
#line 587 "gram.y" #line 586 "gram.y"
{ {
yyval.member = yyvsp[0].member; yyval.member = yyvsp[0].member;
yyval.member->negated = TRUE; yyval.member->negated = TRUE;
} }
break; break;
case 94: case 94:
#line 593 "gram.y" #line 592 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, ALIAS); yyval.member = new_member(yyvsp[0].string, ALIAS);
} }
break; break;
case 95: case 95:
#line 596 "gram.y" #line 595 "gram.y"
{ {
yyval.member = new_member(NULL, ALL); yyval.member = new_member(NULL, ALL);
} }
break; break;
case 96: case 96:
#line 599 "gram.y" #line 598 "gram.y"
{ {
yyval.member = new_member(yyvsp[0].string, WORD); yyval.member = new_member(yyvsp[0].string, WORD);
} }
break; break;
#line 1531 "y.tab.c" #line 1530 "y.tab.c"
} }
yyssp -= yym; yyssp -= yym;
yystate = *yyssp; yystate = *yyssp;

View File

@@ -51,6 +51,7 @@
#include "sudoers.h" /* XXX */ #include "sudoers.h" /* XXX */
#include "parse.h" #include "parse.h"
#include "toke.h"
/* /*
* We must define SIZE_MAX for yacc's skeleton.c. * We must define SIZE_MAX for yacc's skeleton.c.
@@ -96,13 +97,11 @@ yyerror(const char *s)
errorlineno = sudolineno ? sudolineno - 1 : 0; errorlineno = sudolineno ? sudolineno - 1 : 0;
errorfile = estrdup(sudoers); errorfile = estrdup(sudoers);
} }
if (verbose && s != NULL) { if (trace_print != NULL) {
#ifndef TRACELEXER LEXTRACE("<*> ");
} else if (verbose && s != NULL) {
warningx(">>> %s: %s near line %d <<<", sudoers, s, warningx(">>> %s: %s near line %d <<<", sudoers, s,
sudolineno ? sudolineno - 1 : 0); sudolineno ? sudolineno - 1 : 0);
#else
fputs("<*> ", stderr);
#endif
} }
parse_error = TRUE; parse_error = TRUE;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -24,9 +24,18 @@ int fill_txt(const char *, int, int);
int ipv6_valid(const char *s); int ipv6_valid(const char *s);
void yyerror(const char *); void yyerror(const char *);
#ifndef FLEX_SCANNER
extern int (*trace_print)(const char *msg);
#endif
#define fill(a, b) fill_txt(a, b, 0) #define fill(a, b) fill_txt(a, b, 0)
/* realloc() to size + COMMANDARGINC to make room for command args */ /* realloc() to size + COMMANDARGINC to make room for command args */
#define COMMANDARGINC 64 #define COMMANDARGINC 64
#define LEXTRACE(msg) do { \
if (trace_print != NULL) \
(*trace_print)(msg); \
} while (0);
#endif /* _SUDO_TOKE_H */ #endif /* _SUDO_TOKE_H */

View File

@@ -86,12 +86,6 @@ static char *parse_include(char *);
#define push_include(_p) (_push_include((_p), FALSE)) #define push_include(_p) (_push_include((_p), FALSE))
#define push_includedir(_p) (_push_include((_p), TRUE)) #define push_includedir(_p) (_push_include((_p), TRUE))
#define LEXTRACE(msg) do { \
if (trace_print != NULL) \
(*trace_print)(msg); \
} while (0);
%} %}
HEX16 [0-9A-Fa-f]{1,4} HEX16 [0-9A-Fa-f]{1,4}