version 1.23, 2020/01/28 13:10:14 |
version 1.24, 2020/03/31 17:14:40 |
|
|
} |
} |
|
|
%token ERROR |
%token ERROR |
|
%token HIDDEN |
%token IF |
%token IF |
%token ELSE |
%token ELSE |
%token ELIF |
%token ELIF |
|
|
$$ = xmalloc (sizeof *$$); |
$$ = xmalloc (sizeof *$$); |
TAILQ_INIT($$); |
TAILQ_INIT($$); |
} |
} |
|
| hidden_assignment |
|
{ |
|
$$ = xmalloc (sizeof *$$); |
|
TAILQ_INIT($$); |
|
} |
| condition |
| condition |
{ |
{ |
struct cmd_parse_state *ps = &parse_state; |
struct cmd_parse_state *ps = &parse_state; |
|
|
|
|
if ((~flags & CMD_PARSE_PARSEONLY) && |
if ((~flags & CMD_PARSE_PARSEONLY) && |
(ps->scope == NULL || ps->scope->flag)) |
(ps->scope == NULL || ps->scope->flag)) |
environ_put(global_environ, $1); |
environ_put(global_environ, $1, 0); |
free($1); |
free($1); |
} |
} |
|
|
|
hidden_assignment : HIDDEN EQUALS |
|
{ |
|
struct cmd_parse_state *ps = &parse_state; |
|
int flags = ps->input->flags; |
|
|
|
if ((~flags & CMD_PARSE_PARSEONLY) && |
|
(ps->scope == NULL || ps->scope->flag)) |
|
environ_put(global_environ, $2, ENVIRON_HIDDEN); |
|
free($2); |
|
} |
|
|
if_open : IF expanded |
if_open : IF expanded |
{ |
{ |
struct cmd_parse_state *ps = &parse_state; |
struct cmd_parse_state *ps = &parse_state; |
|
|
if (*cp == '\0') |
if (*cp == '\0') |
return (TOKEN); |
return (TOKEN); |
ps->condition = 1; |
ps->condition = 1; |
|
if (strcmp(yylval.token, "%hidden") == 0) { |
|
free(yylval.token); |
|
return (HIDDEN); |
|
} |
if (strcmp(yylval.token, "%if") == 0) { |
if (strcmp(yylval.token, "%if") == 0) { |
free(yylval.token); |
free(yylval.token); |
return (IF); |
return (IF); |