-/* $OpenBSD: flex.skl,v 1.6 2001/01/05 18:26:23 millert Exp $ */
+/* $OpenBSD: flex.skl,v 1.8 2004/02/09 11:38:31 espie Exp $ */
/* A lexical scanner generated by flex */
#line 2 "parse.lex"
/*
* Copyright (c) 1996, 1998-2004 Todd C. Miller <Todd.Miller@courtesan.com>
- * All rights reserved.
*
- * This code is derived from software contributed by Chris Jepeway.
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
*
- * This code is derived from software contributed by Chris Jepeway
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * 4. Products derived from this software may not be called "Sudo" nor
- * may "Sudo" appear in their names without specific prior written
- * permission from the author.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define INDEFS 5
-#line 978 "lex.yy.c"
+#line 960 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 117 "parse.lex"
+#line 99 "parse.lex"
-#line 1134 "lex.yy.c"
+#line 1116 "lex.yy.c"
if ( yy_init )
{
case 1:
YY_RULE_SETUP
-#line 118 "parse.lex"
+#line 100 "parse.lex"
BEGIN STARTDEFS;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 120 "parse.lex"
+#line 102 "parse.lex"
{
BEGIN INDEFS;
LEXTRACE("DEFVAR ");
case 3:
YY_RULE_SETUP
-#line 128 "parse.lex"
+#line 110 "parse.lex"
{
BEGIN STARTDEFS;
LEXTRACE(", ");
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 134 "parse.lex"
+#line 116 "parse.lex"
{
LEXTRACE("= ");
return('=');
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 139 "parse.lex"
+#line 121 "parse.lex"
{
LEXTRACE("+= ");
return('+');
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 144 "parse.lex"
+#line 126 "parse.lex"
{
LEXTRACE("-= ");
return('-');
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 149 "parse.lex"
+#line 131 "parse.lex"
{
LEXTRACE("WORD(1) ");
fill(yytext + 1, yyleng - 2);
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 155 "parse.lex"
+#line 137 "parse.lex"
{
LEXTRACE("WORD(2) ");
fill(yytext, yyleng);
case 9:
YY_RULE_SETUP
-#line 163 "parse.lex"
+#line 145 "parse.lex"
{
LEXTRACE("QUOTEDCHAR ");
fill_args(yytext + 1, 1, sawspace);
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 169 "parse.lex"
+#line 151 "parse.lex"
{
BEGIN INITIAL;
unput(*yytext);
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 175 "parse.lex"
+#line 157 "parse.lex"
{
LEXTRACE("ARG ");
fill_args(yytext, yyleng, sawspace);
case 12:
YY_RULE_SETUP
-#line 182 "parse.lex"
+#line 164 "parse.lex"
{
BEGIN GOTDEFS;
switch (yytext[8]) {
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 200 "parse.lex"
+#line 182 "parse.lex"
{
fill(yytext, yyleng);
switch (*yytext) {
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 219 "parse.lex"
+#line 201 "parse.lex"
{
/* cmnd does not require passwd for this user */
LEXTRACE("NOPASSWD ");
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 225 "parse.lex"
+#line 207 "parse.lex"
{
/* cmnd requires passwd for this user */
LEXTRACE("PASSWD ");
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 231 "parse.lex"
+#line 213 "parse.lex"
{
LEXTRACE("NOEXEC ");
return(NOEXEC);
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 236 "parse.lex"
+#line 218 "parse.lex"
{
LEXTRACE("EXEC ");
return(EXEC);
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 241 "parse.lex"
+#line 223 "parse.lex"
{
/* netgroup */
fill(yytext, yyleng);
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 248 "parse.lex"
+#line 230 "parse.lex"
{
/* UN*X group */
fill(yytext, yyleng);
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 255 "parse.lex"
+#line 237 "parse.lex"
{
fill(yytext, yyleng);
LEXTRACE("NTWKADDR ");
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 261 "parse.lex"
+#line 243 "parse.lex"
{
fill(yytext, yyleng);
LEXTRACE("NTWKADDR ");
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 267 "parse.lex"
+#line 249 "parse.lex"
{
BEGIN GOTRUNAS;
LEXTRACE("RUNAS ");
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 273 "parse.lex"
+#line 255 "parse.lex"
{
if (strcmp(yytext, "ALL") == 0) {
LEXTRACE("ALL ");
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 284 "parse.lex"
+#line 266 "parse.lex"
{
/* username/uid that user can run command as */
fill(yytext, yyleng);
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 291 "parse.lex"
+#line 273 "parse.lex"
{
BEGIN INITIAL;
}
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 295 "parse.lex"
+#line 277 "parse.lex"
{
BEGIN GOTCMND;
LEXTRACE("COMMAND ");
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 301 "parse.lex"
+#line 283 "parse.lex"
{
/* directories can't have args... */
if (yytext[yyleng - 1] == '/') {
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 314 "parse.lex"
+#line 296 "parse.lex"
{
/* a word */
fill(yytext, yyleng);
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 321 "parse.lex"
+#line 303 "parse.lex"
{
LEXTRACE(", ");
return(',');
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 326 "parse.lex"
+#line 308 "parse.lex"
{
LEXTRACE("= ");
return('=');
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 331 "parse.lex"
+#line 313 "parse.lex"
{
LEXTRACE(": ");
return(':');
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 336 "parse.lex"
+#line 318 "parse.lex"
{
if (yyleng % 2 == 1)
return('!'); /* return '!' */
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 341 "parse.lex"
+#line 323 "parse.lex"
{
BEGIN INITIAL;
++sudolineno;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 348 "parse.lex"
+#line 330 "parse.lex"
{ /* throw away space/tabs */
sawspace = TRUE; /* but remember for fill_args */
}
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 352 "parse.lex"
+#line 334 "parse.lex"
{
sawspace = TRUE; /* remember for fill_args */
++sudolineno;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 358 "parse.lex"
+#line 340 "parse.lex"
{
BEGIN INITIAL;
++sudolineno;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 365 "parse.lex"
+#line 347 "parse.lex"
{
LEXTRACE("ERROR ");
return(ERROR);
case YY_STATE_EOF(GOTCMND):
case YY_STATE_EOF(STARTDEFS):
case YY_STATE_EOF(INDEFS):
-#line 370 "parse.lex"
+#line 352 "parse.lex"
{
if (YY_START != INITIAL) {
BEGIN INITIAL;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 379 "parse.lex"
+#line 361 "parse.lex"
ECHO;
YY_BREAK
-#line 1602 "lex.yy.c"
+#line 1584 "lex.yy.c"
case YY_END_OF_BUFFER:
{
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
+#include <unistd.h>
#endif
#endif
return 0;
}
#endif
-#line 379 "parse.lex"
+#line 361 "parse.lex"
static void
fill(s, len)
#line 2 "parse.yacc"
/*
* Copyright (c) 1996, 1998-2004 Todd C. Miller <Todd.Miller@courtesan.com>
- * All rights reserved.
*
- * This code is derived from software contributed by Chris Jepeway.
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * 4. Products derived from this software may not be called "Sudo" nor
- * may "Sudo" appear in their names without specific prior written
- * permission from the author.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
}
parse_error = TRUE;
}
-#line 220 "parse.yacc"
+#line 202 "parse.yacc"
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
int tok;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
-#line 247 "sudo.tab.c"
+#line 229 "sudo.tab.c"
#define COMMAND 257
#define ALIAS 258
#define DEFVAR 259
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
-#line 887 "parse.yacc"
+#line 869 "parse.yacc"
#define MOREALIASES (32)
aliasinfo *aliases = NULL;
if (printmatches == TRUE)
expand_match_list();
}
-#line 982 "sudo.tab.c"
+#line 964 "sudo.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
#if defined(__cplusplus) || defined(__STDC__)
static int yygrowstack(void)
switch (yyn)
{
case 3:
-#line 273 "parse.yacc"
+#line 255 "parse.yacc"
{ ; }
break;
case 4:
-#line 275 "parse.yacc"
+#line 257 "parse.yacc"
{ yyerrok; }
break;
case 5:
-#line 276 "parse.yacc"
+#line 258 "parse.yacc"
{ push; }
break;
case 6:
-#line 276 "parse.yacc"
+#line 258 "parse.yacc"
{
while (top && user_matches != TRUE)
pop;
}
break;
case 7:
-#line 281 "parse.yacc"
+#line 263 "parse.yacc"
{ ; }
break;
case 8:
-#line 283 "parse.yacc"
+#line 265 "parse.yacc"
{ ; }
break;
case 9:
-#line 285 "parse.yacc"
+#line 267 "parse.yacc"
{ ; }
break;
case 10:
-#line 287 "parse.yacc"
+#line 269 "parse.yacc"
{ ; }
break;
case 11:
-#line 289 "parse.yacc"
+#line 271 "parse.yacc"
{ ; }
break;
case 13:
-#line 295 "parse.yacc"
+#line 277 "parse.yacc"
{
defaults_matches = TRUE;
}
break;
case 14:
-#line 298 "parse.yacc"
+#line 280 "parse.yacc"
{ push; }
break;
case 15:
-#line 298 "parse.yacc"
+#line 280 "parse.yacc"
{
defaults_matches = user_matches;
pop;
}
break;
case 16:
-#line 302 "parse.yacc"
+#line 284 "parse.yacc"
{ push; }
break;
case 17:
-#line 302 "parse.yacc"
+#line 284 "parse.yacc"
{
defaults_matches = yyvsp[0].BOOLEAN == TRUE;
pop;
}
break;
case 18:
-#line 306 "parse.yacc"
+#line 288 "parse.yacc"
{ push; }
break;
case 19:
-#line 306 "parse.yacc"
+#line 288 "parse.yacc"
{
defaults_matches = host_matches;
pop;
}
break;
case 22:
-#line 316 "parse.yacc"
+#line 298 "parse.yacc"
{
if (defaults_matches == TRUE &&
!set_default(yyvsp[0].string, NULL, TRUE)) {
}
break;
case 23:
-#line 324 "parse.yacc"
+#line 306 "parse.yacc"
{
if (defaults_matches == TRUE &&
!set_default(yyvsp[0].string, NULL, FALSE)) {
}
break;
case 24:
-#line 332 "parse.yacc"
+#line 314 "parse.yacc"
{
if (defaults_matches == TRUE &&
!set_default(yyvsp[-2].string, yyvsp[0].string, TRUE)) {
}
break;
case 25:
-#line 341 "parse.yacc"
+#line 323 "parse.yacc"
{
if (defaults_matches == TRUE &&
!set_default(yyvsp[-2].string, yyvsp[0].string, '+')) {
}
break;
case 26:
-#line 350 "parse.yacc"
+#line 332 "parse.yacc"
{
if (defaults_matches == TRUE &&
!set_default(yyvsp[-2].string, yyvsp[0].string, '-')) {
}
break;
case 29:
-#line 365 "parse.yacc"
+#line 347 "parse.yacc"
{
/*
* We already did a push if necessary in
}
break;
case 30:
-#line 378 "parse.yacc"
+#line 360 "parse.yacc"
{
if (yyvsp[0].BOOLEAN != -1)
host_matches = yyvsp[0].BOOLEAN;
}
break;
case 31:
-#line 382 "parse.yacc"
+#line 364 "parse.yacc"
{
if (yyvsp[0].BOOLEAN != -1)
host_matches = ! yyvsp[0].BOOLEAN;
}
break;
case 32:
-#line 388 "parse.yacc"
+#line 370 "parse.yacc"
{
yyval.BOOLEAN = TRUE;
}
break;
case 33:
-#line 391 "parse.yacc"
+#line 373 "parse.yacc"
{
if (addr_matches(yyvsp[0].string))
yyval.BOOLEAN = TRUE;
}
break;
case 34:
-#line 398 "parse.yacc"
+#line 380 "parse.yacc"
{
if (netgr_matches(yyvsp[0].string, user_host, user_shost, NULL))
yyval.BOOLEAN = TRUE;
}
break;
case 35:
-#line 405 "parse.yacc"
+#line 387 "parse.yacc"
{
if (hostname_matches(user_shost, user_host, yyvsp[0].string) == 0)
yyval.BOOLEAN = TRUE;
}
break;
case 36:
-#line 412 "parse.yacc"
+#line 394 "parse.yacc"
{
aliasinfo *aip = find_alias(yyvsp[0].string, HOST_ALIAS);
}
break;
case 39:
-#line 440 "parse.yacc"
+#line 422 "parse.yacc"
{
/*
* Push the entry onto the stack if it is worth
}
break;
case 40:
-#line 467 "parse.yacc"
+#line 449 "parse.yacc"
{
if (yyvsp[0].BOOLEAN != -1)
cmnd_matches = yyvsp[0].BOOLEAN;
}
break;
case 41:
-#line 471 "parse.yacc"
+#line 453 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE)
}
break;
case 42:
-#line 479 "parse.yacc"
+#line 461 "parse.yacc"
{
if (yyvsp[0].BOOLEAN != -1)
cmnd_matches = ! yyvsp[0].BOOLEAN;
}
break;
case 43:
-#line 485 "parse.yacc"
+#line 467 "parse.yacc"
{
if (printmatches == TRUE && host_matches == TRUE &&
user_matches == TRUE) {
}
break;
case 44:
-#line 508 "parse.yacc"
+#line 490 "parse.yacc"
{
runas_matches = (yyvsp[0].BOOLEAN == TRUE ? TRUE : FALSE);
}
break;
case 45:
-#line 513 "parse.yacc"
+#line 495 "parse.yacc"
{ ; }
break;
case 46:
-#line 514 "parse.yacc"
+#line 496 "parse.yacc"
{
/* Later entries override earlier ones. */
if (yyvsp[0].BOOLEAN != -1)
}
break;
case 47:
-#line 523 "parse.yacc"
+#line 505 "parse.yacc"
{ ; }
break;
case 48:
-#line 524 "parse.yacc"
+#line 506 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE)
}
break;
case 49:
-#line 532 "parse.yacc"
+#line 514 "parse.yacc"
{
/* Set $$ to the negation of runasuser */
yyval.BOOLEAN = (yyvsp[0].BOOLEAN == -1 ? -1 : ! yyvsp[0].BOOLEAN);
}
break;
case 50:
-#line 538 "parse.yacc"
+#line 520 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE)
}
break;
case 51:
-#line 552 "parse.yacc"
+#line 534 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE)
}
break;
case 52:
-#line 566 "parse.yacc"
+#line 548 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE)
}
break;
case 53:
-#line 580 "parse.yacc"
+#line 562 "parse.yacc"
{
aliasinfo *aip = find_alias(yyvsp[0].string, RUNAS_ALIAS);
}
break;
case 54:
-#line 609 "parse.yacc"
+#line 591 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE)
}
break;
case 55:
-#line 621 "parse.yacc"
+#line 603 "parse.yacc"
{
/* Inherit {NOPASSWD,PASSWD,NOEXEC,EXEC} status. */
if (printmatches == TRUE && host_matches == TRUE &&
}
break;
case 56:
-#line 635 "parse.yacc"
+#line 617 "parse.yacc"
{
no_passwd = TRUE;
if (printmatches == TRUE && host_matches == TRUE &&
}
break;
case 57:
-#line 641 "parse.yacc"
+#line 623 "parse.yacc"
{
no_passwd = FALSE;
if (printmatches == TRUE && host_matches == TRUE &&
}
break;
case 58:
-#line 647 "parse.yacc"
+#line 629 "parse.yacc"
{
no_execve = TRUE;
if (printmatches == TRUE && host_matches == TRUE &&
}
break;
case 59:
-#line 653 "parse.yacc"
+#line 635 "parse.yacc"
{
no_execve = FALSE;
if (printmatches == TRUE && host_matches == TRUE &&
}
break;
case 60:
-#line 661 "parse.yacc"
+#line 643 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE)
}
break;
case 61:
-#line 678 "parse.yacc"
+#line 660 "parse.yacc"
{
aliasinfo *aip;
}
break;
case 62:
-#line 707 "parse.yacc"
+#line 689 "parse.yacc"
{
if (printmatches == TRUE) {
if (in_alias == TRUE) {
}
break;
case 65:
-#line 739 "parse.yacc"
+#line 721 "parse.yacc"
{ push; }
break;
case 66:
-#line 739 "parse.yacc"
+#line 721 "parse.yacc"
{
if ((host_matches != -1 || pedantic) &&
!add_alias(yyvsp[-3].string, HOST_ALIAS, host_matches)) {
}
break;
case 71:
-#line 757 "parse.yacc"
+#line 739 "parse.yacc"
{
push;
if (printmatches == TRUE) {
}
break;
case 72:
-#line 766 "parse.yacc"
+#line 748 "parse.yacc"
{
if ((cmnd_matches != -1 || pedantic) &&
!add_alias(yyvsp[-3].string, CMND_ALIAS, cmnd_matches)) {
}
break;
case 73:
-#line 780 "parse.yacc"
+#line 762 "parse.yacc"
{ ; }
break;
case 77:
-#line 788 "parse.yacc"
+#line 770 "parse.yacc"
{
if (printmatches == TRUE) {
in_alias = TRUE;
}
break;
case 78:
-#line 796 "parse.yacc"
+#line 778 "parse.yacc"
{
if ((yyvsp[0].BOOLEAN != -1 || pedantic) &&
!add_alias(yyvsp[-3].string, RUNAS_ALIAS, yyvsp[0].BOOLEAN)) {
}
break;
case 81:
-#line 813 "parse.yacc"
+#line 795 "parse.yacc"
{ push; }
break;
case 82:
-#line 813 "parse.yacc"
+#line 795 "parse.yacc"
{
if ((user_matches != -1 || pedantic) &&
!add_alias(yyvsp[-3].string, USER_ALIAS, user_matches)) {
}
break;
case 85:
-#line 828 "parse.yacc"
+#line 810 "parse.yacc"
{
if (yyvsp[0].BOOLEAN != -1)
user_matches = yyvsp[0].BOOLEAN;
}
break;
case 86:
-#line 832 "parse.yacc"
+#line 814 "parse.yacc"
{
if (yyvsp[0].BOOLEAN != -1)
user_matches = ! yyvsp[0].BOOLEAN;
}
break;
case 87:
-#line 838 "parse.yacc"
+#line 820 "parse.yacc"
{
if (strcmp(yyvsp[0].string, user_name) == 0)
yyval.BOOLEAN = TRUE;
}
break;
case 88:
-#line 845 "parse.yacc"
+#line 827 "parse.yacc"
{
if (usergr_matches(yyvsp[0].string, user_name))
yyval.BOOLEAN = TRUE;
}
break;
case 89:
-#line 852 "parse.yacc"
+#line 834 "parse.yacc"
{
if (netgr_matches(yyvsp[0].string, NULL, NULL, user_name))
yyval.BOOLEAN = TRUE;
}
break;
case 90:
-#line 859 "parse.yacc"
+#line 841 "parse.yacc"
{
aliasinfo *aip = find_alias(yyvsp[0].string, USER_ALIAS);
}
break;
case 91:
-#line 881 "parse.yacc"
+#line 863 "parse.yacc"
{
yyval.BOOLEAN = TRUE;
}
break;
-#line 1917 "sudo.tab.c"
+#line 1899 "sudo.tab.c"
}
yyssp -= yym;
yystate = *yyssp;