chiark / gitweb /
Upgrade licence to GPLv3+.
[userv.git] / lexer.c
diff --git a/lexer.c b/lexer.c
index 4cff955e83f4508215eb6699a0da102a6b7b26e9..9b1b4cb912bdf59fd6e81f622725c313b4e1089e 100644 (file)
--- a/lexer.c
+++ b/lexer.c
@@ -833,24 +833,25 @@ int yy_flex_debug = 0;
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "lexer.l"
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "lexer.l"
-/*
- *   Copyright (C)1996-1997,1999 Ian Jackson
- *  
- *   This is free software; you can redistribute it and/or modify it
- *   under the terms of the GNU General Public License as published by
- *   the Free Software Foundation; either version 2 of the License, or
- *   (at your option) any later version.
- *  
- *   This program is distributed in the hope that it will be useful, but
- *   WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *   General Public License for more details.
- *  
- *   You should have received a copy of the GNU General Public License
- *   along with userv; if not, write to the Free Software
- *   Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+/* userv is
+ * Copyright 1996-2017 Ian Jackson <ian@davenant.greenend.org.uk>.
+ * Copyright 2000      Ben Harris <bjh21@cam.ac.uk>
+ * Copyright 2016-2017 Peter Benie <pjb1008@cam.ac.uk>
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with userv; if not, see <http://www.gnu.org/licenses/>.
  */
  */
-#line 20 "lexer.l"
+#line 21 "lexer.l"
 
 
 
 
 
 
@@ -971,7 +972,7 @@ static void countnewlines(void);
 
 #define YY_NO_INPUT
 
 
 #define YY_NO_INPUT
 
-#line 975 "<stdout>"
+#line 976 "<stdout>"
 
 #define INITIAL 0
 
 
 #define INITIAL 0
 
@@ -1187,10 +1188,10 @@ YY_DECL
                }
 
        {
                }
 
        {
-#line 145 "lexer.l"
+#line 146 "lexer.l"
 
 
 
 
-#line 1194 "<stdout>"
+#line 1195 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1249,497 +1250,497 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
 
 case 1:
 YY_RULE_SETUP
-#line 147 "lexer.l"
+#line 148 "lexer.l"
 { lr_dir= df_reject; return tokv_word_reject; }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
 { lr_dir= df_reject; return tokv_word_reject; }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 148 "lexer.l"
+#line 149 "lexer.l"
 { lr_dir= df_executefromdirectory; return tokv_word_executefromdirectory; }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
 { lr_dir= df_executefromdirectory; return tokv_word_executefromdirectory; }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 149 "lexer.l"
+#line 150 "lexer.l"
 { lr_dir= df_executefrompath; return tokv_word_executefrompath; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
 { lr_dir= df_executefrompath; return tokv_word_executefrompath; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 150 "lexer.l"
+#line 151 "lexer.l"
 { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
 { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 151 "lexer.l"
+#line 152 "lexer.l"
 { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
 { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 152 "lexer.l"
+#line 153 "lexer.l"
 { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
 { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 153 "lexer.l"
+#line 154 "lexer.l"
 { lr_dir= df_errorstofile; return tokv_word_errorstofile; }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
 { lr_dir= df_errorstofile; return tokv_word_errorstofile; }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 154 "lexer.l"
+#line 155 "lexer.l"
 { lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquoteold; }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
 { lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquoteold; }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 155 "lexer.l"
+#line 156 "lexer.l"
 { lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquotenew; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
 { lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquotenew; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 156 "lexer.l"
+#line 157 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 157 "lexer.l"
+#line 158 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 158 "lexer.l"
+#line 159 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 159 "lexer.l"
+#line 160 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 160 "lexer.l"
+#line 161 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 161 "lexer.l"
+#line 162 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 162 "lexer.l"
+#line 163 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 163 "lexer.l"
+#line 164 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 164 "lexer.l"
+#line 165 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 165 "lexer.l"
+#line 166 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 166 "lexer.l"
+#line 167 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 167 "lexer.l"
+#line 168 "lexer.l"
 { lr_dir= df_cd; return tokv_word_cd; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
 { lr_dir= df_cd; return tokv_word_cd; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 168 "lexer.l"
+#line 169 "lexer.l"
 { lr_dir= df_userrcfile; return tokv_word_userrcfile; }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
 { lr_dir= df_userrcfile; return tokv_word_userrcfile; }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 169 "lexer.l"
+#line 170 "lexer.l"
 { lr_dir= df_include; return tokv_word_include; }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
 { lr_dir= df_include; return tokv_word_include; }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 170 "lexer.l"
+#line 171 "lexer.l"
 { lr_dir= df_include; return tokv_word_includeifexist; }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
 { lr_dir= df_include; return tokv_word_includeifexist; }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 171 "lexer.l"
+#line 172 "lexer.l"
 { lr_dir= df_includelookup; return tokv_word_includelookup; }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
 { lr_dir= df_includelookup; return tokv_word_includelookup; }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 172 "lexer.l"
+#line 173 "lexer.l"
 { lr_dir= df_includelookup; return tokv_word_includelookupall; }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
 { lr_dir= df_includelookup; return tokv_word_includelookupall; }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 173 "lexer.l"
+#line 174 "lexer.l"
 { lr_dir= df_includedirectory; return tokv_word_includedirectory; }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
 { lr_dir= df_includedirectory; return tokv_word_includedirectory; }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 174 "lexer.l"
+#line 175 "lexer.l"
 { lr_dir= df_message; return tokv_word_message; }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
 { lr_dir= df_message; return tokv_word_message; }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 175 "lexer.l"
+#line 176 "lexer.l"
 { lr_dir= df_include; return tokv_word_includesysconfig; }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 { lr_dir= df_include; return tokv_word_includesysconfig; }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 176 "lexer.l"
+#line 177 "lexer.l"
 { lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
 { lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 177 "lexer.l"
+#line 178 "lexer.l"
 { lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 { lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 178 "lexer.l"
+#line 179 "lexer.l"
 { lr_dir= df_quit; return tokv_word_quit; }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 { lr_dir= df_quit; return tokv_word_quit; }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 179 "lexer.l"
+#line 180 "lexer.l"
 { lr_dir= df_eof; return tokv_word_eof; }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 { lr_dir= df_eof; return tokv_word_eof; }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 180 "lexer.l"
+#line 181 "lexer.l"
 { lr_dir= df_if; return tokv_word_if; }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 { lr_dir= df_if; return tokv_word_if; }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 181 "lexer.l"
+#line 182 "lexer.l"
 { lr_dir= df_catchquit; return tokv_word_catchquit; }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 { lr_dir= df_catchquit; return tokv_word_catchquit; }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 182 "lexer.l"
+#line 183 "lexer.l"
 { lr_dir= df_errorspush; return tokv_word_errorspush; }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 { lr_dir= df_errorspush; return tokv_word_errorspush; }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 183 "lexer.l"
+#line 184 "lexer.l"
 { lr_controlend= tokv_word_if; return tokv_word_elif; }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 { lr_controlend= tokv_word_if; return tokv_word_elif; }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 184 "lexer.l"
+#line 185 "lexer.l"
 { lr_controlend= tokv_word_if; return tokv_word_else; }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 { lr_controlend= tokv_word_if; return tokv_word_else; }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 185 "lexer.l"
+#line 186 "lexer.l"
 { lr_controlend= tokv_word_if; return tokv_word_fi; }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 { lr_controlend= tokv_word_if; return tokv_word_fi; }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 186 "lexer.l"
+#line 187 "lexer.l"
 { lr_controlend= tokv_word_catchquit; return tokv_word_hctac; }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 { lr_controlend= tokv_word_catchquit; return tokv_word_hctac; }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 187 "lexer.l"
+#line 188 "lexer.l"
 { lr_controlend= tokv_word_errorspush; return tokv_word_srorre; }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 { lr_controlend= tokv_word_errorspush; return tokv_word_srorre; }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 188 "lexer.l"
+#line 189 "lexer.l"
 { lr_parmcond= pcf_glob; return tokv_word_glob; }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 { lr_parmcond= pcf_glob; return tokv_word_glob; }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 189 "lexer.l"
+#line 190 "lexer.l"
 { lr_parmcond= pcf_range; return tokv_word_range; }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 { lr_parmcond= pcf_range; return tokv_word_range; }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 190 "lexer.l"
+#line 191 "lexer.l"
 { lr_parmcond= pcf_grep; return tokv_word_grep; }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 { lr_parmcond= pcf_grep; return tokv_word_grep; }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 191 "lexer.l"
+#line 192 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 192 "lexer.l"
+#line 193 "lexer.l"
 { lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 { lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 193 "lexer.l"
+#line 194 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 194 "lexer.l"
+#line 195 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 195 "lexer.l"
+#line 196 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 196 "lexer.l"
+#line 197 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 197 "lexer.l"
+#line 198 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 198 "lexer.l"
+#line 199 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 199 "lexer.l"
+#line 200 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 { lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 200 "lexer.l"
+#line 201 "lexer.l"
 { lr_parameter= pf_service; return tokv_word_service; }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 { lr_parameter= pf_service; return tokv_word_service; }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 201 "lexer.l"
+#line 202 "lexer.l"
 { lr_parameter= pf_callinguser; return tokv_word_callinguser; }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 { lr_parameter= pf_callinguser; return tokv_word_callinguser; }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 202 "lexer.l"
+#line 203 "lexer.l"
 { lr_parameter= pf_callinggroup; return tokv_word_callinggroup; }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 { lr_parameter= pf_callinggroup; return tokv_word_callinggroup; }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 203 "lexer.l"
+#line 204 "lexer.l"
 { lr_parameter= pf_callingusershell; return tokv_word_callingusershell; }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 { lr_parameter= pf_callingusershell; return tokv_word_callingusershell; }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 204 "lexer.l"
+#line 205 "lexer.l"
 { lr_parameter= pf_serviceuser; return tokv_word_serviceuser; }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 { lr_parameter= pf_serviceuser; return tokv_word_serviceuser; }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 205 "lexer.l"
+#line 206 "lexer.l"
 { lr_parameter= pf_servicegroup; return tokv_word_servicegroup; }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 { lr_parameter= pf_servicegroup; return tokv_word_servicegroup; }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 206 "lexer.l"
+#line 207 "lexer.l"
 { lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 { lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 207 "lexer.l"
+#line 208 "lexer.l"
 { lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 { lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 208 "lexer.l"
+#line 209 "lexer.l"
 { lr_loglevel= LOG_INFO; return tokv_syslog_info; }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 { lr_loglevel= LOG_INFO; return tokv_syslog_info; }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 209 "lexer.l"
+#line 210 "lexer.l"
 { lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 { lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 210 "lexer.l"
+#line 211 "lexer.l"
 { lr_loglevel= LOG_WARNING; return tokv_syslog_warning; }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 { lr_loglevel= LOG_WARNING; return tokv_syslog_warning; }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 211 "lexer.l"
+#line 212 "lexer.l"
 { lr_loglevel= LOG_ERR; return tokv_syslog_err; }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 { lr_loglevel= LOG_ERR; return tokv_syslog_err; }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 212 "lexer.l"
+#line 213 "lexer.l"
 { lr_loglevel= LOG_CRIT; return tokv_syslog_crit; }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 { lr_loglevel= LOG_CRIT; return tokv_syslog_crit; }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 213 "lexer.l"
+#line 214 "lexer.l"
 { lr_loglevel= LOG_ALERT; return tokv_syslog_alert; }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 { lr_loglevel= LOG_ALERT; return tokv_syslog_alert; }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 214 "lexer.l"
+#line 215 "lexer.l"
 { lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 { lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 215 "lexer.l"
+#line 216 "lexer.l"
 { lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 { lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 216 "lexer.l"
+#line 217 "lexer.l"
 { lr_logfacility= LOG_CRON; return tokv_syslog_cron; }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 { lr_logfacility= LOG_CRON; return tokv_syslog_cron; }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 217 "lexer.l"
+#line 218 "lexer.l"
 { lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 { lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 218 "lexer.l"
+#line 219 "lexer.l"
 { lr_logfacility= LOG_KERN; return tokv_syslog_kern; }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 { lr_logfacility= LOG_KERN; return tokv_syslog_kern; }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 219 "lexer.l"
+#line 220 "lexer.l"
 { lr_logfacility= LOG_LPR; return tokv_syslog_lpr; }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LPR; return tokv_syslog_lpr; }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 220 "lexer.l"
+#line 221 "lexer.l"
 { lr_logfacility= LOG_MAIL; return tokv_syslog_mail; }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 { lr_logfacility= LOG_MAIL; return tokv_syslog_mail; }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 221 "lexer.l"
+#line 222 "lexer.l"
 { lr_logfacility= LOG_NEWS; return tokv_syslog_news; }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 { lr_logfacility= LOG_NEWS; return tokv_syslog_news; }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 222 "lexer.l"
+#line 223 "lexer.l"
 { lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 { lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 223 "lexer.l"
+#line 224 "lexer.l"
 { lr_logfacility= LOG_USER; return tokv_syslog_user; }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 { lr_logfacility= LOG_USER; return tokv_syslog_user; }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 224 "lexer.l"
+#line 225 "lexer.l"
 { lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 { lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 225 "lexer.l"
+#line 226 "lexer.l"
 { lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 226 "lexer.l"
+#line 227 "lexer.l"
 { lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 227 "lexer.l"
+#line 228 "lexer.l"
 { lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 228 "lexer.l"
+#line 229 "lexer.l"
 { lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 229 "lexer.l"
+#line 230 "lexer.l"
 { lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 230 "lexer.l"
+#line 231 "lexer.l"
 { lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 231 "lexer.l"
+#line 232 "lexer.l"
 { lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 232 "lexer.l"
+#line 233 "lexer.l"
 { lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 { lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 233 "lexer.l"
+#line 234 "lexer.l"
 { return tokv_word_read; }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 { return tokv_word_read; }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 234 "lexer.l"
+#line 235 "lexer.l"
 { return tokv_word_write; }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 { return tokv_word_write; }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 235 "lexer.l"
+#line 236 "lexer.l"
 { return tokv_dollar; }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 { return tokv_dollar; }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 236 "lexer.l"
+#line 237 "lexer.l"
 {  lr_max= lr_min= 0; return tokv_word_stdin; }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 {  lr_max= lr_min= 0; return tokv_word_stdin; }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 237 "lexer.l"
+#line 238 "lexer.l"
 {  lr_max= lr_min= 1; return tokv_word_stdout; }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 {  lr_max= lr_min= 1; return tokv_word_stdout; }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 238 "lexer.l"
+#line 239 "lexer.l"
 {  lr_max= lr_min= 2; return tokv_word_stderr; }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 {  lr_max= lr_min= 2; return tokv_word_stderr; }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 239 "lexer.l"
+#line 240 "lexer.l"
 { return tokv_openparen; }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 { return tokv_openparen; }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 240 "lexer.l"
+#line 241 "lexer.l"
 { return tokv_closeparen; }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 { return tokv_closeparen; }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 241 "lexer.l"
+#line 242 "lexer.l"
 { return tokv_not; }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 { return tokv_not; }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 242 "lexer.l"
+#line 243 "lexer.l"
 { return tokv_and; }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 { return tokv_and; }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 243 "lexer.l"
+#line 244 "lexer.l"
 { return tokv_or; }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 { return tokv_or; }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 244 "lexer.l"
+#line 245 "lexer.l"
 { lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 { lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 248 "lexer.l"
+#line 249 "lexer.l"
 {
                          char *ep;
                          lr_min=lr_max= (int)strtoul(yytext,&ep,10);
 {
                          char *ep;
                          lr_min=lr_max= (int)strtoul(yytext,&ep,10);
@@ -1749,7 +1750,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 100:
 YY_RULE_SETUP
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 254 "lexer.l"
+#line 255 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1764,7 +1765,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 101:
 YY_RULE_SETUP
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 265 "lexer.l"
+#line 266 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1777,35 +1778,35 @@ YY_RULE_SETUP
 case 102:
 /* rule 102 can match eol */
 YY_RULE_SETUP
 case 102:
 /* rule 102 can match eol */
 YY_RULE_SETUP
-#line 273 "lexer.l"
+#line 274 "lexer.l"
 countnewlines(); return tokv_lwsp;
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 countnewlines(); return tokv_lwsp;
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 274 "lexer.l"
+#line 275 "lexer.l"
 return tokv_lwsp;
        YY_BREAK
 case 104:
 /* rule 104 can match eol */
 YY_RULE_SETUP
 return tokv_lwsp;
        YY_BREAK
 case 104:
 /* rule 104 can match eol */
 YY_RULE_SETUP
-#line 275 "lexer.l"
+#line 276 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
 case 105:
 /* rule 105 can match eol */
 YY_RULE_SETUP
 cstate->lineno++; return tokv_newline;
        YY_BREAK
 case 105:
 /* rule 105 can match eol */
 YY_RULE_SETUP
-#line 276 "lexer.l"
+#line 277 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 cstate->lineno++; return tokv_newline;
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 277 "lexer.l"
+#line 278 "lexer.l"
 return parseerrprint("missing newline at eof after comment");
        YY_BREAK
 case 107:
 /* rule 107 can match eol */
 YY_RULE_SETUP
 return parseerrprint("missing newline at eof after comment");
        YY_BREAK
 case 107:
 /* rule 107 can match eol */
 YY_RULE_SETUP
-#line 278 "lexer.l"
+#line 279 "lexer.l"
 {
                          countnewlines();
                          return dequote(yytext);
 {
                          countnewlines();
                          return dequote(yytext);
@@ -1813,34 +1814,34 @@ YY_RULE_SETUP
        YY_BREAK
 case 108:
 YY_RULE_SETUP
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 282 "lexer.l"
+#line 283 "lexer.l"
 return tokv_barestring;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 return tokv_barestring;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 283 "lexer.l"
+#line 284 "lexer.l"
 return tokv_eof;
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 return tokv_eof;
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 284 "lexer.l"
+#line 285 "lexer.l"
 return parseerrprint("misquoted or unterminated string");
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 return parseerrprint("misquoted or unterminated string");
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 285 "lexer.l"
+#line 286 "lexer.l"
 return parseerrprint("unexpected backslash");
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 return parseerrprint("unexpected backslash");
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 286 "lexer.l"
+#line 287 "lexer.l"
 abort(); /* expect lex warning "rule cannot be matched" */
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 abort(); /* expect lex warning "rule cannot be matched" */
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 289 "lexer.l"
+#line 290 "lexer.l"
 ECHO;
        YY_BREAK
 ECHO;
        YY_BREAK
-#line 1844 "<stdout>"
+#line 1845 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
 
        case YY_END_OF_BUFFER:
                {
@@ -2802,7 +2803,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
 
 #define YYTABLES_NAME "yytables"
 
-#line 289 "lexer.l"
+#line 290 "lexer.l"