=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/doas/parse.y,v retrieving revision 1.25 retrieving revision 1.26 diff -c -r1.25 -r1.26 *** src/usr.bin/doas/parse.y 2016/12/29 19:12:42 1.25 --- src/usr.bin/doas/parse.y 2017/01/02 01:40:20 1.26 *************** *** 1,4 **** ! /* $OpenBSD: parse.y,v 1.25 2016/12/29 19:12:42 tedu Exp $ */ /* * Copyright (c) 2015 Ted Unangst * --- 1,4 ---- ! /* $OpenBSD: parse.y,v 1.26 2017/01/02 01:40:20 tedu Exp $ */ /* * Copyright (c) 2015 Ted Unangst * *************** *** 36,41 **** --- 36,42 ---- const char **cmdargs; const char **envlist; }; + const char **strlist; const char *str; }; int lineno; *************** *** 141,161 **** } | TKEEPENV { $$.options = KEEPENV; $$.envlist = NULL; ! } | TSETENV '{' envlist '}' { $$.options = 0; ! $$.envlist = $3.envlist; } ; ! envlist: /* empty */ { ! if (!($$.envlist = calloc(1, sizeof(char *)))) ! errx(1, "can't allocate envlist"); ! } | envlist TSTRING { ! int nenv = arraylen($1.envlist); ! if (!($$.envlist = reallocarray($1.envlist, nenv + 2, sizeof(char *)))) ! errx(1, "can't allocate envlist"); ! $$.envlist[nenv] = $2.str; ! $$.envlist[nenv + 1] = NULL; } ; --- 142,162 ---- } | TKEEPENV { $$.options = KEEPENV; $$.envlist = NULL; ! } | TSETENV '{' strlist '}' { $$.options = 0; ! $$.envlist = $3.strlist; } ; ! strlist: /* empty */ { ! if (!($$.strlist = calloc(1, sizeof(char *)))) ! errx(1, "can't allocate strlist"); ! } | strlist TSTRING { ! int nstr = arraylen($1.strlist); ! if (!($$.strlist = reallocarray($1.strlist, nstr + 2, sizeof(char *)))) ! errx(1, "can't allocate strlist"); ! $$.strlist[nstr] = $2.str; ! $$.strlist[nstr + 1] = NULL; } ; *************** *** 179,198 **** args: /* empty */ { $$.cmdargs = NULL; ! } | TARGS argslist { ! $$.cmdargs = $2.cmdargs; ! } ; ! ! argslist: /* empty */ { ! if (!($$.cmdargs = calloc(1, sizeof(char *)))) ! errx(1, "can't allocate args"); ! } | argslist TSTRING { ! int nargs = arraylen($1.cmdargs); ! if (!($$.cmdargs = reallocarray($1.cmdargs, nargs + 2, ! sizeof(char *)))) ! errx(1, "can't allocate args"); ! $$.cmdargs[nargs] = $2.str; ! $$.cmdargs[nargs + 1] = NULL; } ; %% --- 180,187 ---- args: /* empty */ { $$.cmdargs = NULL; ! } | TARGS strlist { ! $$.cmdargs = $2.strlist; } ; %%