chiark / gitweb /
Correct quoting of include-lookup directory. Closes:#837391. (With new directives...
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 23 Jan 2017 14:30:43 +0000 (14:30 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 23 Jan 2017 14:30:43 +0000 (14:30 +0000)
daemon.h
debian/changelog
language.i4
lexer.c
lexer.l
lexer.l.m4
parser.c
spec.sgml
spec.sgml.in
tokens.h

index 235271e..b1e8622 100644 (file)
--- a/daemon.h
+++ b/daemon.h
@@ -33,6 +33,7 @@
   allow-fd 1-2 write          \n\
   reject-fd 3-                \n\
   disconnect-hup              \n\
+  include-lookup-quote-new    \n\
 "
 
 #ifndef SYSTEMCONFIGDIR
index eb460e2..2642ac5 100644 (file)
@@ -8,6 +8,8 @@ userv (1.1.2~~iwj1) unstable; urgency=low
   * Do not ignore errors from readdir.  Closes:#827408 [Peter Benie].
   * Correct docs for errors-push, which takes no filename.
     Closes:#775852.
+  * Correct quoting of include-lookup directory.  Closes:#837391.
+    (With new directives to somewhat ease backward-compatibility.)
 
   Packaging etc.
   * Honour XCFLAGS.
index 9b328e6..6227daa 100644 (file)
@@ -66,6 +66,7 @@ autovaldeftype(`readwrite')
 autovaldeftype(`string')
 autovaldeftype(`execmode')
 autovaldeftype(`ehandlemode')
+autovaldeftype(`lookupquotemode')
 autovaldeftype(`builtinservice')
 autovaldeftype(`misc')
 autovaldeftype(`internal')
@@ -80,6 +81,8 @@ define(`isdirectiveinternal',`isdirectivefn(`$1',`dfi_'makename(`$1'),
                                             `|tokt_internal$2')')
 define(`isexecmode',`isdirective(`$1',`|tokt_execmode')')
 define(`isehandlemode',`isdirective(`$1',`|tokt_ehandlemode')')
+define(`islookupquotemode',`isdirectivefn(`$1',`dfg_lookupquotemode',
+       `|tokt_lookupquotemode')')
 define(`isfdwant',`isdirectivefn(`$1',`dfg_fdwant',`',
                       `lr_fdwant_readwrite=$2; ')')
 define(`isflagpair',`isdirectivefn(`$1',`dfg_setflag',`',
@@ -95,6 +98,8 @@ isexecmode(`execute-builtin')
 isehandlemode(`errors-to-stderr')
 isehandlemode(`errors-to-syslog')
 isehandlemode(`errors-to-file')
+islookupquotemode(`include-lookup-quote-old')
+islookupquotemode(`include-lookup-quote-new')
 isfdwant(`require-fd',`1')
 isfdwant(`allow-fd',`0')
 isfdwant(`null-fd',`0')
diff --git a/lexer.c b/lexer.c
index 5ab56ed..4cff955 100644 (file)
--- a/lexer.c
+++ b/lexer.c
@@ -363,8 +363,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 110
-#define YY_END_OF_BUFFER 111
+#define YY_NUM_RULES 112
+#define YY_END_OF_BUFFER 113
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -372,71 +372,72 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[575] =
+static yyconst flex_int16_t yy_accept[587] =
     {   0,
-        0,    0,  111,  106,  101,  102,   93,  107,  104,   87,
-       94,   91,   92,   97,  108,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,   95,  106,  101,
-      102,  104,    0,    0,  105,    0,  104,  104,  103,   99,
-       97,    0,  100,  106,  106,  106,  106,   19,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,   37,  106,
-      106,  106,  106,   32,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-
-      106,    0,    0,    0,   98,   97,  100,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,   31,   63,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,   71,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,    0,    0,   98,   97,  106,  106,
-      106,   67,  106,  106,   64,   68,  106,  106,  106,   35,
-       36,  106,  106,  106,  106,   40,   42,  106,   51,  106,
-      106,   60,   70,  106,   72,  106,   73,  106,  106,  106,
-
-      106,  106,  106,  106,   30,  106,   85,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,   75,   76,  106,   62,  106,    0,   98,   97,  106,
-       65,  106,  106,  106,  106,  106,   59,  106,   66,  106,
-       96,  106,   38,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,   41,  106,  106,   49,  106,
-      106,  106,  106,  106,  106,   88,  106,  106,  106,  106,
-      106,  106,  106,   86,   98,   97,  106,  106,  106,  106,
-      106,   69,  106,  106,  106,  106,  106,  106,   70,   77,
-       78,   79,   80,   81,   82,   83,   84,  106,  106,  106,
-
-      106,   61,  106,  106,  106,    1,  106,  106,  106,  106,
-      106,   39,   90,   89,  106,   74,  106,  106,  106,  106,
-       98,   97,  106,  106,  106,  106,  106,  106,  106,  106,
-       50,  106,   21,   26,  106,  106,  106,   10,  106,  106,
-      106,  106,  106,   52,  106,  106,  106,  106,  106,   45,
-       62,   98,   97,  106,    9,   67,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,   47,  106,
-      106,  106,  106,  106,   48,  106,   46,  106,   98,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,   12,
-      106,  106,  106,  106,  106,  106,   44,   11,  106,  106,
-
-      106,  106,  106,  106,   98,  106,  106,  106,  106,  106,
-       33,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,    8,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  106,   43,   34,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-      106,   20,  106,  106,  106,  106,   53,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-       56,  106,  106,  106,  106,  106,   54,  106,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
-       57,  106,  106,   15,  106,  106,  106,  106,   17,    7,
-
-      106,  106,  106,  106,  106,  106,  106,   23,  106,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,    4,
-      106,  106,  106,   22,  106,  106,  106,  106,  106,   13,
-      106,  106,  106,  106,    5,    6,  106,  106,  106,  106,
-      106,  106,   16,  106,  106,  106,  106,  106,  106,    3,
-       25,  106,   18,  106,  106,  106,   27,  106,   55,  106,
-       24,   14,   58,  106,  106,  106,  106,   28,  106,  106,
-      106,   29,    2,    0
+        0,    0,  113,  108,  103,  104,   95,  109,  106,   89,
+       96,   93,   94,   99,  110,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,   97,  108,  103,
+      104,  106,    0,    0,  107,    0,  106,  106,  105,  101,
+       99,    0,  102,  108,  108,  108,  108,   21,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,   39,  108,
+      108,  108,  108,   34,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+
+      108,    0,    0,    0,  100,   99,  102,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,  108,   33,   65,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,   73,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,    0,    0,  100,   99,  108,  108,
+      108,   69,  108,  108,   66,   70,  108,  108,  108,   37,
+       38,  108,  108,  108,  108,   42,   44,  108,   53,  108,
+      108,   62,   72,  108,   74,  108,   75,  108,  108,  108,
+
+      108,  108,  108,  108,   32,  108,   87,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,   77,   78,  108,   64,  108,    0,  100,   99,  108,
+       67,  108,  108,  108,  108,  108,   61,  108,   68,  108,
+       98,  108,   40,  108,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,   43,  108,  108,   51,  108,
+      108,  108,  108,  108,  108,   90,  108,  108,  108,  108,
+      108,  108,  108,   88,  100,   99,  108,  108,  108,  108,
+      108,   71,  108,  108,  108,  108,  108,  108,   72,   79,
+       80,   81,   82,   83,   84,   85,   86,  108,  108,  108,
+
+      108,   63,  108,  108,  108,    1,  108,  108,  108,  108,
+      108,   41,   92,   91,  108,   76,  108,  108,  108,  108,
+      100,   99,  108,  108,  108,  108,  108,  108,  108,  108,
+       52,  108,   23,   28,  108,  108,  108,   12,  108,  108,
+      108,  108,  108,   54,  108,  108,  108,  108,  108,   47,
+       64,  100,   99,  108,   11,   69,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,   49,  108,
+      108,  108,  108,  108,   50,  108,   48,  108,  100,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,   14,
+      108,  108,  108,  108,  108,  108,   46,   13,  108,  108,
+
+      108,  108,  108,  108,  100,  108,  108,  108,  108,  108,
+       35,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,   10,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,   45,   36,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+      108,   22,  108,  108,  108,  108,   55,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+       58,  108,  108,  108,  108,  108,   56,  108,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
+       59,  108,  108,   17,  108,  108,  108,  108,   19,    7,
+
+      108,  108,  108,  108,  108,  108,  108,   25,  108,  108,
+      108,  108,  108,  108,  108,  108,  108,  108,  108,    4,
+      108,  108,  108,   24,  108,  108,  108,  108,  108,   15,
+      108,  108,  108,  108,    5,    6,  108,  108,  108,  108,
+      108,  108,  108,   18,  108,  108,  108,  108,  108,  108,
+        3,   27,  108,  108,   20,  108,  108,  108,   29,  108,
+       57,  108,   26,  108,   16,   60,  108,  108,  108,  108,
+      108,   30,  108,  108,  108,  108,  108,   31,    2,  108,
+      108,  108,  108,    9,    8,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -481,141 +482,147 @@ static yyconst YY_CHAR yy_meta[52] =
         1
     } ;
 
-static yyconst flex_uint16_t yy_base[581] =
+static yyconst flex_uint16_t yy_base[593] =
     {   0,
-        0,    0,  789,    0,   50,  790,    0,   49,   55,    0,
-        0,    0,    0,   67,   59,  755,   19,   49,   34,   56,
-      754,   29,   39,   59,  757,   30,   71,   70,  739,  759,
-      738,   76,   74,  743,   65,  752,   82,    0,    0,  111,
-      790,  777,   73,   97,  790,  134,  123,  776,  790,  170,
-      179,  109,  119,  740,   93,  733,   94,    0,   94,  747,
-      749,  731,   98,  744,  726,  741,  728,  740,    0,  729,
-      738,  722,  729,    0,  726,  113,  721,  735,  719,  727,
-      716,  711,  120,  721,  727,  119,  722,  716,  133,  118,
-      708,  713,  723,  710,  706,  708,  718,  719,  703,  702,
-
-      710,  163,    0,  196,  214,  223,  157,  715,  699,  701,
-      707,  702,  710,  692,  697,  697,  688,  705,  701,  701,
-      687,  695,    0,  688,  699,  699,  684,  698,  682,  682,
-      684,  680,  680,  692,    0,  680,  672,  671,  135,  680,
-      676,  669,  677,  684,  664,  676,  678,  676,  659,  674,
-      657,  655,  688,  655,  656,  140,  657,  660,  659,  652,
-      653,  649,  653,  646,    0,  232,  250,  259,  653,  644,
-      640,  646,  652,  652,    0,    0,  644,  651,  642,    0,
-        0,  649,  637,  636,  632,    0,    0,  649,    0,  633,
-      629,    0,  644,  636,    0,  646,    0,  637,  175,  642,
-
-      656,  625,  639,  628,    0,  635,    0,  636,  629,  617,
-      618,  626,  629,  629,  614,  613,  616,  608,  610,  612,
-      621,  637,    0,  615,  614,  617,  276,  287,  296,  600,
-        0,  632,  601,  604,  629,  602,    0,  601,    0,  599,
-      594,  592,    0,  606,  606,  597,  305,  601,  588,  586,
-      589,  599,  597,  593,  596,    0,  580,  581,    0,  589,
-      594,  582,  580,  589,  575,    0,  572,  586,  583,  567,
-      570,  572,  572,    0,  313,  322,  581,  578,  574,  575,
-      564,    0,  566,  565,  590,  572,  588,  570,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  569,  570,  584,
-
-      555,    0,  566,  565,  548,  579,  561,  545,  559,  541,
-      539,    0,    0,    0,  542,    0,  555,  556,  544,  550,
-      331,  340,  551,  551,  532,  565,  531,  546,  537,  128,
-      561,  542,  559,    0,  531,  540,  526,    0,  538,  537,
-      535,  552,  514,  550,  528,  522,  516,  522,  527,    0,
-        0,  349,  544,  543,    0,    0,  251,  521,  526,  523,
-      506,  511,  145,  521,  255,  510,  509,  517,    0,  503,
-      516,  513,  253,  500,    0,  529,    0,  507,  358,  353,
-      497,  495,  493,  492,  497,  491,  521,  487,  489,    0,
-      497,  499,  489,  489,  480,  482,    0,    0,  496,  481,
-
-      479,  482,  495,  483,    0,  482,  468,  473,  476,  485,
-        0,  501,  468,  479,  351,  477,  470,  466,  478,  467,
-      476,  471,  460,    0,  463,  472,  462,  457,  469,  464,
-      453,  466,  449,  451,  460,    0,    0,  458,   95,  454,
-      452,  459,  439,  451,  458,  442,  471,  437,  439,  443,
-      448,    0,  449,  450,  434,  435,  462,  428,  436,  443,
-      427,  425,  456,  440,  433,  420,  420,  424,  437,  421,
-      448,  430,  415,  419,  417,  443,    0,  411,  413,  423,
-      422,  414,  416,  257,  404,  404,  406,  433,  406,  401,
-        0,  399,  403,    0,  396,  401,  396,  405,    0,    0,
-
-      394,  396,  396,  400,  407,  392,  386,  417,  396,  390,
-      395,  393,  380,  411,  392,  394,  391,  377,  387,    0,
-      375,  372,  373,    0,  380,  356,  371,  354,  366,    0,
-      366,  359,  361,  354,    0,    0,  360,  356,  338,  350,
-      345,  346,    0,  347,  343,  264,  261,  257,  265,    0,
-        0,  254,    0,  245,  251,  248,    0,  220,    0,  211,
-        0,    0,    0,  178,  178,  167,  172,    0,  161,  171,
-      132,    0,    0,  790,  398,  402,  406,  410,  173,  166
+        0,    0,  801,    0,   50,  802,    0,   49,   55,    0,
+        0,    0,    0,   67,   59,  767,   19,   49,   34,   56,
+      766,   29,   39,   59,  769,   30,   71,   70,  751,  771,
+      750,   76,   74,  755,   65,  764,   82,    0,    0,  111,
+      802,  789,   73,   97,  802,  134,  123,  788,  802,  170,
+      179,  109,  119,  752,   93,  745,   94,    0,   94,  759,
+      761,  743,   98,  756,  738,  753,  740,  752,    0,  741,
+      750,  734,  741,    0,  738,  113,  733,  747,  731,  739,
+      728,  723,  120,  733,  739,  119,  734,  728,  133,  118,
+      720,  725,  735,  722,  718,  720,  730,  731,  715,  714,
+
+      722,  163,    0,  196,  214,  223,  157,  727,  711,  713,
+      719,  714,  722,  704,  709,  709,  700,  717,  713,  713,
+      699,  707,    0,  700,  711,  711,  696,  710,  694,  694,
+      696,  692,  692,  704,    0,  692,  684,  683,  135,  692,
+      688,  681,  689,  696,  676,  688,  690,  688,  671,  686,
+      669,  667,  700,  667,  668,  140,  669,  672,  671,  664,
+      665,  661,  665,  658,    0,  232,  250,  259,  665,  656,
+      652,  658,  664,  664,    0,    0,  656,  663,  654,    0,
+        0,  661,  649,  648,  644,    0,    0,  661,    0,  645,
+      641,    0,  656,  648,    0,  658,    0,  649,  175,  654,
+
+      668,  637,  651,  640,    0,  647,    0,  648,  641,  629,
+      630,  638,  641,  641,  626,  625,  628,  620,  622,  624,
+      633,  649,    0,  627,  626,  629,  276,  287,  296,  612,
+        0,  644,  613,  616,  641,  614,    0,  613,    0,  611,
+      606,  604,    0,  618,  618,  609,  305,  613,  600,  598,
+      601,  611,  609,  605,  608,    0,  592,  593,    0,  601,
+      606,  594,  592,  601,  587,    0,  584,  598,  595,  579,
+      582,  584,  584,    0,  313,  322,  593,  590,  586,  587,
+      576,    0,  578,  577,  602,  584,  600,  582,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  581,  582,  596,
+
+      567,    0,  578,  577,  560,  591,  573,  557,  571,  553,
+      551,    0,    0,    0,  554,    0,  567,  568,  556,  562,
+      331,  340,  563,  563,  544,  577,  543,  558,  549,  128,
+      573,  554,  571,    0,  543,  552,  538,    0,  550,  549,
+      547,  564,  526,  562,  540,  534,  528,  534,  539,    0,
+        0,  349,  556,  555,    0,    0,  251,  533,  538,  535,
+      518,  523,  145,  533,  255,  522,  521,  529,    0,  515,
+      528,  525,  253,  512,    0,  541,    0,  519,  358,  353,
+      509,  507,  505,  504,  509,  503,  533,  499,  501,    0,
+      509,  511,  501,  501,  492,  494,    0,    0,  508,  493,
+
+      491,  494,  507,  495,    0,  494,  480,  485,  488,  497,
+        0,  513,  480,  491,  351,  489,  482,  478,  490,  479,
+      488,  483,  472,    0,  475,  484,  474,  469,  481,  476,
+      465,  478,  461,  463,  472,    0,    0,  470,   95,  466,
+      464,  471,  451,  463,  470,  454,  483,  449,  451,  455,
+      460,    0,  461,  462,  446,  447,  474,  440,  448,  455,
+      439,  437,  468,  452,  445,  432,  432,  436,  449,  433,
+      460,  442,  427,  431,  429,  455,    0,  423,  425,  435,
+      434,  426,  428,  257,  416,  416,  418,  445,  418,  413,
+        0,  411,  415,    0,  408,  413,  408,  417,    0,    0,
+
+      406,  408,  408,  412,  419,  404,  398,  429,  408,  402,
+      407,  405,  392,  423,  404,  406,  403,  389,  399,    0,
+      387,  384,  385,    0,  358,  381,  396,  381,  394,    0,
+      395,  388,  390,  383,    0,    0,  389,  385,  367,  370,
+      357,  361,  359,    0,  359,  354,  361,  358,  354,  362,
+        0,    0,  352,  348,    0,  342,  349,  346,    0,  346,
+        0,  251,    0,  250,    0,    0,  263,  263,  251,  260,
+      254,    0,  244,  244,  224,  159,  164,    0,    0,  178,
+      170,  158,  153,    0,    0,  802,  399,  403,  407,  411,
+      173,  166
+
     } ;
 
-static yyconst flex_int16_t yy_def[581] =
+static yyconst flex_int16_t yy_def[593] =
     {   0,
-      574,    1,  574,  575,  574,  574,  575,  576,  577,  575,
-      575,  575,  575,  575,  574,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  574,
-      574,  578,  574,  576,  574,  576,  577,  578,  574,  575,
-       14,  574,  574,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-
-      575,  574,  579,  576,  575,   14,  574,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  580,  104,  575,   14,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  576,  575,   14,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,   14,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,   14,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
-      575,  575,  575,    0,  574,  574,  574,  574,  574,  574
+      586,    1,  586,  587,  586,  586,  587,  588,  589,  587,
+      587,  587,  587,  587,  586,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  586,
+      586,  590,  586,  588,  586,  588,  589,  590,  586,  587,
+       14,  586,  586,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+
+      587,  586,  591,  588,  587,   14,  586,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  592,  104,  587,   14,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  588,  587,   14,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,   14,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,   14,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  587,    0,  586,  586,  586,  586,
+      586,  586
+
     } ;
 
-static yyconst flex_uint16_t yy_nxt[842] =
+static yyconst flex_uint16_t yy_nxt[854] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,    4,   11,   12,
        13,    4,   14,   14,   14,   14,   14,   14,   14,   14,
@@ -631,24 +638,24 @@ static yyconst flex_uint16_t yy_nxt[842] =
        88,   45,   90,   68,   89,   91,  100,   97,   83,   98,
        52,   53,   40,   41,   84,   92,   42,   93,   94,   46,
       107,  109,   95,  101,   48,   49,  114,   48,  110,  112,
-      119,  139,  115,   43,  574,  102,   44,  113,  460,  131,
+      119,  139,  115,   43,  586,  102,   44,  113,  460,  131,
       120,   43,  132,  461,  151,   48,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  574,  143,  147,  107,  152,
+      103,  103,  103,  103,  103,  586,  143,  147,  107,  152,
       144,  153,  198,  140,  102,   44,  148,  361,  216,   44,
       388,  362,  217,  149,  389,  150,  165,  199,  218,   43,
-      573,  104,  105,  105,  105,  105,  105,  105,  105,  105,
+      585,  104,  105,  105,  105,  105,  105,  105,  105,  105,
       105,  106,  106,  106,  106,  106,  106,  106,  106,  106,
 
-       45,  572,  571,  250,  570,  569,  568,  567,  166,  166,
+       45,  580,  581,  250,  584,  583,  582,  579,  166,  166,
       166,  166,  166,  166,  166,  166,  166,  166,   46,  251,
       166,  166,  166,  166,  166,  166,  167,  167,  167,  167,
       167,  167,  167,  167,  167,  168,  168,  168,  168,  168,
       168,  168,  168,  168,  227,  227,  227,  227,  227,  227,
-      227,  227,  227,  227,  566,  565,  227,  227,  227,  227,
+      227,  227,  227,  227,  578,  577,  227,  227,  227,  227,
       227,  227,  228,  228,  228,  228,  228,  228,  228,  228,
       228,  229,  229,  229,  229,  229,  229,  229,  229,  229,
-       45,  381,  391,  400,  504,  564,  563,  392,  562,  561,
-      393,  560,  559,  558,  557,  382,  505,  401,   46,  275,
+       45,  381,  391,  400,  504,  576,  575,  392,  574,  573,
+      393,  572,  571,  570,  569,  382,  505,  401,   46,  275,
 
       275,  275,  275,  275,  275,  275,  275,  275,  276,  276,
       276,  276,  276,  276,  276,  276,  276,  290,  291,  292,
@@ -658,61 +665,62 @@ static yyconst flex_uint16_t yy_nxt[842] =
       352,  352,  353,  353,  353,  353,  353,  353,  353,  353,
       353,  379,  379,  379,  379,  379,  379,  379,  379,  379,
       405,  405,  405,  405,  405,  405,  405,  405,  405,  406,
-      438,  556,  555,  554,  553,  552,  551,  550,  549,  548,
-      547,  546,  545,  439,  544,  407,  543,  408,   39,  542,
-
-      541,   39,   44,   44,  540,   44,   47,   47,   47,   47,
-       48,   48,   48,   48,  539,  538,  537,  536,  535,  534,
-      533,  532,  531,  530,  529,  528,  527,  526,  525,  524,
-      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
-      513,  512,  511,  510,  509,  508,  507,  506,  503,  502,
-      501,  500,  499,  498,  497,  496,  495,  494,  493,  492,
-      491,  490,  489,  488,  487,  486,  485,  484,  483,  482,
-      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
-      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
-      459,  458,  457,  456,  455,  454,  453,  452,  451,  450,
-
-      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
-      437,  436,  435,  434,  433,  432,  431,  430,  429,  428,
-      427,  426,  425,  424,  423,  422,  421,  420,  419,  418,
-      417,  416,  415,  414,  413,  412,  411,  410,  409,  404,
-      403,  402,  399,  398,  397,  396,  395,  394,  390,  387,
-      386,  385,  384,  383,  380,   50,  378,  377,  376,  375,
-      374,  373,  356,  372,  371,  370,  369,  368,  367,  366,
-      365,  364,  363,  360,  359,  358,  357,  356,  355,  354,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
-
-      331,  330,  329,  328,  327,  326,  325,  324,  323,  320,
-      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
-      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
-      299,  298,  289,  288,  287,  286,  285,  284,  283,  282,
-      281,  280,  279,  278,  277,  274,  273,  272,  271,  270,
-      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
-      259,  258,  257,  256,  255,  239,  254,  253,  252,  249,
-      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
-      238,  237,  236,  235,  234,  233,  232,  231,  230,  226,
-      225,  224,  223,  222,  221,  220,  219,  215,  214,  213,
-
-      212,  211,  210,  209,  208,  207,  206,  205,  204,  203,
-      202,  201,  200,  197,  196,  195,  194,  193,  192,  191,
-      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
-      180,  179,  178,  177,  176,  175,  174,  173,  172,  171,
-      170,  169,  164,  163,  162,  161,  160,  159,  158,  157,
-      156,  155,  154,  146,  145,  142,  141,  138,  137,  136,
-      135,  134,  133,  130,  129,  128,  127,  126,  125,  124,
-      123,  122,  121,  118,  117,  116,  111,  108,   49,   49,
-       99,   96,   87,   86,   85,   77,   69,   54,  574,    3,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574
+      438,  568,  540,  567,  566,  565,  564,  563,  562,  561,
+      560,  559,  558,  439,  557,  407,  556,  408,  541,   39,
+
+      555,  554,   39,   44,   44,  553,   44,   47,   47,   47,
+       47,   48,   48,   48,   48,  552,  551,  550,  549,  548,
+      547,  546,  545,  544,  543,  542,  539,  538,  537,  536,
+      535,  534,  533,  532,  531,  530,  529,  528,  527,  526,
+      525,  524,  523,  522,  521,  520,  519,  518,  517,  516,
+      515,  514,  513,  512,  511,  510,  509,  508,  507,  506,
+      503,  502,  501,  500,  499,  498,  497,  496,  495,  494,
+      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
+      483,  482,  481,  480,  479,  478,  477,  476,  475,  474,
+      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
+
+      463,  462,  459,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
+      441,  440,  437,  436,  435,  434,  433,  432,  431,  430,
+      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
+      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
+      409,  404,  403,  402,  399,  398,  397,  396,  395,  394,
+      390,  387,  386,  385,  384,  383,  380,   50,  378,  377,
+      376,  375,  374,  373,  356,  372,  371,  370,  369,  368,
+      367,  366,  365,  364,  363,  360,  359,  358,  357,  356,
+      355,  354,  351,  350,  349,  348,  347,  346,  345,  344,
+
+      343,  342,  341,  340,  339,  338,  337,  336,  335,  334,
+      333,  332,  331,  330,  329,  328,  327,  326,  325,  324,
+      323,  320,  319,  318,  317,  316,  315,  314,  313,  312,
+      311,  310,  309,  308,  307,  306,  305,  304,  303,  302,
+      301,  300,  299,  298,  289,  288,  287,  286,  285,  284,
+      283,  282,  281,  280,  279,  278,  277,  274,  273,  272,
+      271,  270,  269,  268,  267,  266,  265,  264,  263,  262,
+      261,  260,  259,  258,  257,  256,  255,  239,  254,  253,
+      252,  249,  248,  247,  246,  245,  244,  243,  242,  241,
+      240,  239,  238,  237,  236,  235,  234,  233,  232,  231,
+
+      230,  226,  225,  224,  223,  222,  221,  220,  219,  215,
+      214,  213,  212,  211,  210,  209,  208,  207,  206,  205,
+      204,  203,  202,  201,  200,  197,  196,  195,  194,  193,
+      192,  191,  190,  189,  188,  187,  186,  185,  184,  183,
+      182,  181,  180,  179,  178,  177,  176,  175,  174,  173,
+      172,  171,  170,  169,  164,  163,  162,  161,  160,  159,
+      158,  157,  156,  155,  154,  146,  145,  142,  141,  138,
+      137,  136,  135,  134,  133,  130,  129,  128,  127,  126,
+      125,  124,  123,  122,  121,  118,  117,  116,  111,  108,
+       49,   49,   99,   96,   87,   86,   85,   77,   69,   54,
+
+      586,    3,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586
     } ;
 
-static yyconst flex_int16_t yy_chk[842] =
+static yyconst flex_int16_t yy_chk[854] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -731,21 +739,21 @@ static yyconst flex_int16_t yy_chk[842] =
        63,   83,   59,   40,   46,   46,   46,   57,  439,   76,
        63,   53,   76,  439,   90,   47,   46,   46,   46,   46,
        46,   46,   46,   46,   46,   46,   86,   89,  107,   90,
-       86,   90,  139,   83,  102,  102,   89,  330,  156,  580,
-      363,  330,  156,   89,  363,   89,  579,  139,  156,  107,
-      571,   46,   50,   50,   50,   50,   50,   50,   50,   50,
+       86,   90,  139,   83,  102,  102,   89,  330,  156,  592,
+      363,  330,  156,   89,  363,   89,  591,  139,  156,  107,
+      583,   46,   50,   50,   50,   50,   50,   50,   50,   50,
        50,   51,   51,   51,   51,   51,   51,   51,   51,   51,
 
-      104,  570,  569,  199,  567,  566,  565,  564,  104,  104,
+      104,  577,  577,  199,  582,  581,  580,  576,  104,  104,
       104,  104,  104,  104,  104,  104,  104,  104,  104,  199,
       104,  104,  104,  104,  104,  104,  105,  105,  105,  105,
       105,  105,  105,  105,  105,  106,  106,  106,  106,  106,
       106,  106,  106,  106,  166,  166,  166,  166,  166,  166,
-      166,  166,  166,  166,  560,  558,  166,  166,  166,  166,
+      166,  166,  166,  166,  575,  574,  166,  166,  166,  166,
       166,  166,  167,  167,  167,  167,  167,  167,  167,  167,
       167,  168,  168,  168,  168,  168,  168,  168,  168,  168,
-      227,  357,  365,  373,  484,  556,  555,  365,  554,  552,
-      365,  549,  548,  547,  546,  357,  484,  373,  227,  228,
+      227,  357,  365,  373,  484,  573,  571,  365,  570,  569,
+      365,  568,  567,  564,  562,  357,  484,  373,  227,  228,
 
       228,  228,  228,  228,  228,  228,  228,  228,  229,  229,
       229,  229,  229,  229,  229,  229,  229,  247,  247,  247,
@@ -755,58 +763,59 @@ static yyconst flex_int16_t yy_chk[842] =
       321,  321,  322,  322,  322,  322,  322,  322,  322,  322,
       322,  352,  352,  352,  352,  352,  352,  352,  352,  352,
       379,  379,  379,  379,  379,  379,  379,  379,  379,  380,
-      415,  545,  544,  542,  541,  540,  539,  538,  537,  534,
-      533,  532,  531,  415,  529,  380,  528,  380,  575,  527,
-
-      526,  575,  576,  576,  525,  576,  577,  577,  577,  577,
-      578,  578,  578,  578,  523,  522,  521,  519,  518,  517,
-      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
-      506,  505,  504,  503,  502,  501,  498,  497,  496,  495,
-      493,  492,  490,  489,  488,  487,  486,  485,  483,  482,
-      481,  480,  479,  478,  476,  475,  474,  473,  472,  471,
-      470,  469,  468,  467,  466,  465,  464,  463,  462,  461,
-      460,  459,  458,  457,  456,  455,  454,  453,  451,  450,
-      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
-      438,  435,  434,  433,  432,  431,  430,  429,  428,  427,
-
-      426,  425,  423,  422,  421,  420,  419,  418,  417,  416,
-      414,  413,  412,  410,  409,  408,  407,  406,  404,  403,
-      402,  401,  400,  399,  396,  395,  394,  393,  392,  391,
-      389,  388,  387,  386,  385,  384,  383,  382,  381,  378,
-      376,  374,  372,  371,  370,  368,  367,  366,  364,  362,
-      361,  360,  359,  358,  354,  353,  349,  348,  347,  346,
-      345,  344,  343,  342,  341,  340,  339,  337,  336,  335,
-      333,  332,  331,  329,  328,  327,  326,  325,  324,  323,
-      320,  319,  318,  317,  315,  311,  310,  309,  308,  307,
-      306,  305,  304,  303,  301,  300,  299,  298,  288,  287,
-
-      286,  285,  284,  283,  281,  280,  279,  278,  277,  273,
-      272,  271,  270,  269,  268,  267,  265,  264,  263,  262,
-      261,  260,  258,  257,  255,  254,  253,  252,  251,  250,
-      249,  248,  246,  245,  244,  242,  241,  240,  238,  236,
-      235,  234,  233,  232,  230,  226,  225,  224,  222,  221,
-      220,  219,  218,  217,  216,  215,  214,  213,  212,  211,
-      210,  209,  208,  206,  204,  203,  202,  201,  200,  198,
-      196,  194,  193,  191,  190,  188,  185,  184,  183,  182,
-      179,  178,  177,  174,  173,  172,  171,  170,  169,  164,
-      163,  162,  161,  160,  159,  158,  157,  155,  154,  153,
-
-      152,  151,  150,  149,  148,  147,  146,  145,  144,  143,
-      142,  141,  140,  138,  137,  136,  134,  133,  132,  131,
-      130,  129,  128,  127,  126,  125,  124,  122,  121,  120,
-      119,  118,  117,  116,  115,  114,  113,  112,  111,  110,
-      109,  108,  101,  100,   99,   98,   97,   96,   95,   94,
-       93,   92,   91,   88,   87,   85,   84,   82,   81,   80,
-       79,   78,   77,   75,   73,   72,   71,   70,   68,   67,
-       66,   65,   64,   62,   61,   60,   56,   54,   48,   42,
-       36,   34,   31,   30,   29,   25,   21,   16,    3,  574,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
-      574
+      415,  560,  525,  558,  557,  556,  554,  553,  550,  549,
+      548,  547,  546,  415,  545,  380,  543,  380,  525,  587,
+
+      542,  541,  587,  588,  588,  540,  588,  589,  589,  589,
+      589,  590,  590,  590,  590,  539,  538,  537,  534,  533,
+      532,  531,  529,  528,  527,  526,  523,  522,  521,  519,
+      518,  517,  516,  515,  514,  513,  512,  511,  510,  509,
+      508,  507,  506,  505,  504,  503,  502,  501,  498,  497,
+      496,  495,  493,  492,  490,  489,  488,  487,  486,  485,
+      483,  482,  481,  480,  479,  478,  476,  475,  474,  473,
+      472,  471,  470,  469,  468,  467,  466,  465,  464,  463,
+      462,  461,  460,  459,  458,  457,  456,  455,  454,  453,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
+
+      441,  440,  438,  435,  434,  433,  432,  431,  430,  429,
+      428,  427,  426,  425,  423,  422,  421,  420,  419,  418,
+      417,  416,  414,  413,  412,  410,  409,  408,  407,  406,
+      404,  403,  402,  401,  400,  399,  396,  395,  394,  393,
+      392,  391,  389,  388,  387,  386,  385,  384,  383,  382,
+      381,  378,  376,  374,  372,  371,  370,  368,  367,  366,
+      364,  362,  361,  360,  359,  358,  354,  353,  349,  348,
+      347,  346,  345,  344,  343,  342,  341,  340,  339,  337,
+      336,  335,  333,  332,  331,  329,  328,  327,  326,  325,
+      324,  323,  320,  319,  318,  317,  315,  311,  310,  309,
+
+      308,  307,  306,  305,  304,  303,  301,  300,  299,  298,
+      288,  287,  286,  285,  284,  283,  281,  280,  279,  278,
+      277,  273,  272,  271,  270,  269,  268,  267,  265,  264,
+      263,  262,  261,  260,  258,  257,  255,  254,  253,  252,
+      251,  250,  249,  248,  246,  245,  244,  242,  241,  240,
+      238,  236,  235,  234,  233,  232,  230,  226,  225,  224,
+      222,  221,  220,  219,  218,  217,  216,  215,  214,  213,
+      212,  211,  210,  209,  208,  206,  204,  203,  202,  201,
+      200,  198,  196,  194,  193,  191,  190,  188,  185,  184,
+      183,  182,  179,  178,  177,  174,  173,  172,  171,  170,
+
+      169,  164,  163,  162,  161,  160,  159,  158,  157,  155,
+      154,  153,  152,  151,  150,  149,  148,  147,  146,  145,
+      144,  143,  142,  141,  140,  138,  137,  136,  134,  133,
+      132,  131,  130,  129,  128,  127,  126,  125,  124,  122,
+      121,  120,  119,  118,  117,  116,  115,  114,  113,  112,
+      111,  110,  109,  108,  101,  100,   99,   98,   97,   96,
+       95,   94,   93,   92,   91,   88,   87,   85,   84,   82,
+       81,   80,   79,   78,   77,   75,   73,   72,   71,   70,
+       68,   67,   66,   65,   64,   62,   61,   60,   56,   54,
+       48,   42,   36,   34,   31,   30,   29,   25,   21,   16,
+
+        3,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
+      586,  586,  586
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -877,7 +886,7 @@ typedef int directive_fnt(int dtoken);
 static directive_fnt df_reject, df_execute, df_executefrompath;
 static directive_fnt df_executefromdirectory, df_executebuiltin;
 static directive_fnt df_errorstostderr, df_errorstosyslog, df_errorstofile;
-static directive_fnt dfg_fdwant, dfg_setflag;
+static directive_fnt dfg_fdwant, dfg_setflag, dfg_lookupquotemode;
 static directive_fnt df_reset, df_cd, df_userrcfile, df_include;
 static directive_fnt df_includelookup, df_includedirectory;
 static directive_fnt df_message, df_error, df_quit, df_eof;
@@ -960,7 +969,9 @@ static struct error_handling eh = { tokv_word_errorstostderr, 0,0,0,0,0 };
 static int dequote(char *inplace);
 static void countnewlines(void);
 
-#line 964 "<stdout>"
+#define YY_NO_INPUT
+
+#line 975 "<stdout>"
 
 #define INITIAL 0
 
@@ -1176,10 +1187,10 @@ YY_DECL
                }
 
        {
-#line 143 "lexer.l"
+#line 145 "lexer.l"
 
 
-#line 1183 "<stdout>"
+#line 1194 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1206,13 +1217,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 575 )
+                               if ( yy_current_state >= 587 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 790 );
+               while ( yy_base[yy_current_state] != 802 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1238,487 +1249,497 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 145 "lexer.l"
+#line 147 "lexer.l"
 { lr_dir= df_reject; return tokv_word_reject; }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 146 "lexer.l"
+#line 148 "lexer.l"
 { lr_dir= df_executefromdirectory; return tokv_word_executefromdirectory; }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 147 "lexer.l"
+#line 149 "lexer.l"
 { lr_dir= df_executefrompath; return tokv_word_executefrompath; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 148 "lexer.l"
+#line 150 "lexer.l"
 { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 149 "lexer.l"
+#line 151 "lexer.l"
 { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 150 "lexer.l"
+#line 152 "lexer.l"
 { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 151 "lexer.l"
+#line 153 "lexer.l"
 { lr_dir= df_errorstofile; return tokv_word_errorstofile; }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 152 "lexer.l"
-{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; }
+#line 154 "lexer.l"
+{ lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquoteold; }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 153 "lexer.l"
-{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; }
+#line 155 "lexer.l"
+{ lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquotenew; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 154 "lexer.l"
-{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; }
+#line 156 "lexer.l"
+{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 155 "lexer.l"
-{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; }
+#line 157 "lexer.l"
+{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 156 "lexer.l"
-{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; }
+#line 158 "lexer.l"
+{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 157 "lexer.l"
-{ lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; }
+#line 159 "lexer.l"
+{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 158 "lexer.l"
-{ lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; }
+#line 160 "lexer.l"
+{ lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 159 "lexer.l"
-{ lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; }
+#line 161 "lexer.l"
+{ lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 160 "lexer.l"
-{ lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; }
+#line 162 "lexer.l"
+{ lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 161 "lexer.l"
-{ lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; }
+#line 163 "lexer.l"
+{ lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 162 "lexer.l"
-{ lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; }
+#line 164 "lexer.l"
+{ lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 163 "lexer.l"
-{ lr_dir= df_cd; return tokv_word_cd; }
+#line 165 "lexer.l"
+{ lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 164 "lexer.l"
-{ lr_dir= df_userrcfile; return tokv_word_userrcfile; }
+#line 166 "lexer.l"
+{ lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 165 "lexer.l"
-{ lr_dir= df_include; return tokv_word_include; }
+#line 167 "lexer.l"
+{ lr_dir= df_cd; return tokv_word_cd; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 166 "lexer.l"
-{ lr_dir= df_include; return tokv_word_includeifexist; }
+#line 168 "lexer.l"
+{ lr_dir= df_userrcfile; return tokv_word_userrcfile; }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 167 "lexer.l"
-{ lr_dir= df_includelookup; return tokv_word_includelookup; }
+#line 169 "lexer.l"
+{ lr_dir= df_include; return tokv_word_include; }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 168 "lexer.l"
-{ lr_dir= df_includelookup; return tokv_word_includelookupall; }
+#line 170 "lexer.l"
+{ lr_dir= df_include; return tokv_word_includeifexist; }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 169 "lexer.l"
-{ lr_dir= df_includedirectory; return tokv_word_includedirectory; }
+#line 171 "lexer.l"
+{ lr_dir= df_includelookup; return tokv_word_includelookup; }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 170 "lexer.l"
-{ lr_dir= df_message; return tokv_word_message; }
+#line 172 "lexer.l"
+{ lr_dir= df_includelookup; return tokv_word_includelookupall; }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 171 "lexer.l"
-{ lr_dir= df_include; return tokv_word_includesysconfig; }
+#line 173 "lexer.l"
+{ lr_dir= df_includedirectory; return tokv_word_includedirectory; }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 172 "lexer.l"
-{ lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; }
+#line 174 "lexer.l"
+{ lr_dir= df_message; return tokv_word_message; }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 173 "lexer.l"
-{ lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; }
+#line 175 "lexer.l"
+{ lr_dir= df_include; return tokv_word_includesysconfig; }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 174 "lexer.l"
-{ lr_dir= df_quit; return tokv_word_quit; }
+#line 176 "lexer.l"
+{ lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 175 "lexer.l"
-{ lr_dir= df_eof; return tokv_word_eof; }
+#line 177 "lexer.l"
+{ lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 176 "lexer.l"
-{ lr_dir= df_if; return tokv_word_if; }
+#line 178 "lexer.l"
+{ lr_dir= df_quit; return tokv_word_quit; }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 177 "lexer.l"
-{ lr_dir= df_catchquit; return tokv_word_catchquit; }
+#line 179 "lexer.l"
+{ lr_dir= df_eof; return tokv_word_eof; }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 178 "lexer.l"
-{ lr_dir= df_errorspush; return tokv_word_errorspush; }
+#line 180 "lexer.l"
+{ lr_dir= df_if; return tokv_word_if; }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 179 "lexer.l"
-{ lr_controlend= tokv_word_if; return tokv_word_elif; }
+#line 181 "lexer.l"
+{ lr_dir= df_catchquit; return tokv_word_catchquit; }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 180 "lexer.l"
-{ lr_controlend= tokv_word_if; return tokv_word_else; }
+#line 182 "lexer.l"
+{ lr_dir= df_errorspush; return tokv_word_errorspush; }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 181 "lexer.l"
-{ lr_controlend= tokv_word_if; return tokv_word_fi; }
+#line 183 "lexer.l"
+{ lr_controlend= tokv_word_if; return tokv_word_elif; }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 182 "lexer.l"
-{ lr_controlend= tokv_word_catchquit; return tokv_word_hctac; }
+#line 184 "lexer.l"
+{ lr_controlend= tokv_word_if; return tokv_word_else; }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 183 "lexer.l"
-{ lr_controlend= tokv_word_errorspush; return tokv_word_srorre; }
+#line 185 "lexer.l"
+{ lr_controlend= tokv_word_if; return tokv_word_fi; }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 184 "lexer.l"
-{ lr_parmcond= pcf_glob; return tokv_word_glob; }
+#line 186 "lexer.l"
+{ lr_controlend= tokv_word_catchquit; return tokv_word_hctac; }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 185 "lexer.l"
-{ lr_parmcond= pcf_range; return tokv_word_range; }
+#line 187 "lexer.l"
+{ lr_controlend= tokv_word_errorspush; return tokv_word_srorre; }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 186 "lexer.l"
-{ lr_parmcond= pcf_grep; return tokv_word_grep; }
+#line 188 "lexer.l"
+{ lr_parmcond= pcf_glob; return tokv_word_glob; }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 187 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; }
+#line 189 "lexer.l"
+{ lr_parmcond= pcf_range; return tokv_word_range; }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 188 "lexer.l"
-{ lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; }
+#line 190 "lexer.l"
+{ lr_parmcond= pcf_grep; return tokv_word_grep; }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 189 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; }
+#line 191 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 190 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; }
+#line 192 "lexer.l"
+{ lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 191 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; }
+#line 193 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 192 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; }
+#line 194 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 193 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; }
+#line 195 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 194 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; }
+#line 196 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 195 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; }
+#line 197 "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
-#line 196 "lexer.l"
-{ lr_parameter= pf_service; return tokv_word_service; }
+#line 198 "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
-#line 197 "lexer.l"
-{ lr_parameter= pf_callinguser; return tokv_word_callinguser; }
+#line 199 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 198 "lexer.l"
-{ lr_parameter= pf_callinggroup; return tokv_word_callinggroup; }
+#line 200 "lexer.l"
+{ lr_parameter= pf_service; return tokv_word_service; }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 199 "lexer.l"
-{ lr_parameter= pf_callingusershell; return tokv_word_callingusershell; }
+#line 201 "lexer.l"
+{ lr_parameter= pf_callinguser; return tokv_word_callinguser; }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 200 "lexer.l"
-{ lr_parameter= pf_serviceuser; return tokv_word_serviceuser; }
+#line 202 "lexer.l"
+{ lr_parameter= pf_callinggroup; return tokv_word_callinggroup; }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 201 "lexer.l"
-{ lr_parameter= pf_servicegroup; return tokv_word_servicegroup; }
+#line 203 "lexer.l"
+{ lr_parameter= pf_callingusershell; return tokv_word_callingusershell; }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 202 "lexer.l"
-{ lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; }
+#line 204 "lexer.l"
+{ lr_parameter= pf_serviceuser; return tokv_word_serviceuser; }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 203 "lexer.l"
-{ lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; }
+#line 205 "lexer.l"
+{ lr_parameter= pf_servicegroup; return tokv_word_servicegroup; }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 204 "lexer.l"
-{ lr_loglevel= LOG_INFO; return tokv_syslog_info; }
+#line 206 "lexer.l"
+{ lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 205 "lexer.l"
-{ lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; }
+#line 207 "lexer.l"
+{ lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 206 "lexer.l"
-{ lr_loglevel= LOG_WARNING; return tokv_syslog_warning; }
+#line 208 "lexer.l"
+{ lr_loglevel= LOG_INFO; return tokv_syslog_info; }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 207 "lexer.l"
-{ lr_loglevel= LOG_ERR; return tokv_syslog_err; }
+#line 209 "lexer.l"
+{ lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 208 "lexer.l"
-{ lr_loglevel= LOG_CRIT; return tokv_syslog_crit; }
+#line 210 "lexer.l"
+{ lr_loglevel= LOG_WARNING; return tokv_syslog_warning; }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 209 "lexer.l"
-{ lr_loglevel= LOG_ALERT; return tokv_syslog_alert; }
+#line 211 "lexer.l"
+{ lr_loglevel= LOG_ERR; return tokv_syslog_err; }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 210 "lexer.l"
-{ lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; }
+#line 212 "lexer.l"
+{ lr_loglevel= LOG_CRIT; return tokv_syslog_crit; }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 211 "lexer.l"
-{ lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; }
+#line 213 "lexer.l"
+{ lr_loglevel= LOG_ALERT; return tokv_syslog_alert; }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 212 "lexer.l"
-{ lr_logfacility= LOG_CRON; return tokv_syslog_cron; }
+#line 214 "lexer.l"
+{ lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 213 "lexer.l"
-{ lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; }
+#line 215 "lexer.l"
+{ lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 214 "lexer.l"
-{ lr_logfacility= LOG_KERN; return tokv_syslog_kern; }
+#line 216 "lexer.l"
+{ lr_logfacility= LOG_CRON; return tokv_syslog_cron; }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 215 "lexer.l"
-{ lr_logfacility= LOG_LPR; return tokv_syslog_lpr; }
+#line 217 "lexer.l"
+{ lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 216 "lexer.l"
-{ lr_logfacility= LOG_MAIL; return tokv_syslog_mail; }
+#line 218 "lexer.l"
+{ lr_logfacility= LOG_KERN; return tokv_syslog_kern; }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 217 "lexer.l"
-{ lr_logfacility= LOG_NEWS; return tokv_syslog_news; }
+#line 219 "lexer.l"
+{ lr_logfacility= LOG_LPR; return tokv_syslog_lpr; }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 218 "lexer.l"
-{ lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; }
+#line 220 "lexer.l"
+{ lr_logfacility= LOG_MAIL; return tokv_syslog_mail; }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 219 "lexer.l"
-{ lr_logfacility= LOG_USER; return tokv_syslog_user; }
+#line 221 "lexer.l"
+{ lr_logfacility= LOG_NEWS; return tokv_syslog_news; }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 220 "lexer.l"
-{ lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; }
+#line 222 "lexer.l"
+{ lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 221 "lexer.l"
-{ lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; }
+#line 223 "lexer.l"
+{ lr_logfacility= LOG_USER; return tokv_syslog_user; }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 222 "lexer.l"
-{ lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; }
+#line 224 "lexer.l"
+{ lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 223 "lexer.l"
-{ lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; }
+#line 225 "lexer.l"
+{ lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 224 "lexer.l"
-{ lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; }
+#line 226 "lexer.l"
+{ lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 225 "lexer.l"
-{ lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; }
+#line 227 "lexer.l"
+{ lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 226 "lexer.l"
-{ lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; }
+#line 228 "lexer.l"
+{ lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 227 "lexer.l"
-{ lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; }
+#line 229 "lexer.l"
+{ lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 228 "lexer.l"
-{ lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
+#line 230 "lexer.l"
+{ lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 229 "lexer.l"
-{ return tokv_word_read; }
+#line 231 "lexer.l"
+{ lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 230 "lexer.l"
-{ return tokv_word_write; }
+#line 232 "lexer.l"
+{ lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 231 "lexer.l"
-{ return tokv_dollar; }
+#line 233 "lexer.l"
+{ return tokv_word_read; }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 232 "lexer.l"
-{  lr_max= lr_min= 0; return tokv_word_stdin; }
+#line 234 "lexer.l"
+{ return tokv_word_write; }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 233 "lexer.l"
-{  lr_max= lr_min= 1; return tokv_word_stdout; }
+#line 235 "lexer.l"
+{ return tokv_dollar; }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 234 "lexer.l"
-{  lr_max= lr_min= 2; return tokv_word_stderr; }
+#line 236 "lexer.l"
+{  lr_max= lr_min= 0; return tokv_word_stdin; }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 235 "lexer.l"
-{ return tokv_openparen; }
+#line 237 "lexer.l"
+{  lr_max= lr_min= 1; return tokv_word_stdout; }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 236 "lexer.l"
-{ return tokv_closeparen; }
+#line 238 "lexer.l"
+{  lr_max= lr_min= 2; return tokv_word_stderr; }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 237 "lexer.l"
-{ return tokv_not; }
+#line 239 "lexer.l"
+{ return tokv_openparen; }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 238 "lexer.l"
-{ return tokv_and; }
+#line 240 "lexer.l"
+{ return tokv_closeparen; }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 239 "lexer.l"
-{ return tokv_or; }
+#line 241 "lexer.l"
+{ return tokv_not; }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 240 "lexer.l"
-{ lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
+#line 242 "lexer.l"
+{ return tokv_and; }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
+#line 243 "lexer.l"
+{ return tokv_or; }
+       YY_BREAK
+case 98:
+YY_RULE_SETUP
 #line 244 "lexer.l"
+{ lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
+       YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 248 "lexer.l"
 {
                          char *ep;
                          lr_min=lr_max= (int)strtoul(yytext,&ep,10);
@@ -1726,9 +1747,9 @@ YY_RULE_SETUP
                          return tokv_ordinal;
                        }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 250 "lexer.l"
+#line 254 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1741,9 +1762,9 @@ YY_RULE_SETUP
                          return tokv_fdrange;
                        }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 261 "lexer.l"
+#line 265 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1753,73 +1774,73 @@ YY_RULE_SETUP
                          return tokv_fdstoend;
                        }
        YY_BREAK
-case 100:
-/* rule 100 can match eol */
+case 102:
+/* rule 102 can match eol */
 YY_RULE_SETUP
-#line 269 "lexer.l"
+#line 273 "lexer.l"
 countnewlines(); return tokv_lwsp;
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 270 "lexer.l"
+#line 274 "lexer.l"
 return tokv_lwsp;
        YY_BREAK
-case 102:
-/* rule 102 can match eol */
+case 104:
+/* rule 104 can match eol */
 YY_RULE_SETUP
-#line 271 "lexer.l"
+#line 275 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
-case 103:
-/* rule 103 can match eol */
+case 105:
+/* rule 105 can match eol */
 YY_RULE_SETUP
-#line 272 "lexer.l"
+#line 276 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 273 "lexer.l"
+#line 277 "lexer.l"
 return parseerrprint("missing newline at eof after comment");
        YY_BREAK
-case 105:
-/* rule 105 can match eol */
+case 107:
+/* rule 107 can match eol */
 YY_RULE_SETUP
-#line 274 "lexer.l"
+#line 278 "lexer.l"
 {
                          countnewlines();
                          return dequote(yytext);
                        }
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 278 "lexer.l"
+#line 282 "lexer.l"
 return tokv_barestring;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 279 "lexer.l"
+#line 283 "lexer.l"
 return tokv_eof;
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 280 "lexer.l"
+#line 284 "lexer.l"
 return parseerrprint("misquoted or unterminated string");
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 281 "lexer.l"
+#line 285 "lexer.l"
 return parseerrprint("unexpected backslash");
        YY_BREAK
-case 109:
+case 111:
 YY_RULE_SETUP
-#line 282 "lexer.l"
+#line 286 "lexer.l"
 abort(); /* expect lex warning "rule cannot be matched" */
        YY_BREAK
-case 110:
+case 112:
 YY_RULE_SETUP
-#line 285 "lexer.l"
+#line 289 "lexer.l"
 ECHO;
        YY_BREAK
-#line 1823 "<stdout>"
+#line 1844 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2110,7 +2131,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 575 )
+                       if ( yy_current_state >= 587 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
@@ -2138,11 +2159,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 575 )
+               if ( yy_current_state >= 587 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
-       yy_is_jam = (yy_current_state == 574);
+       yy_is_jam = (yy_current_state == 586);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2781,7 +2802,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 285 "lexer.l"
+#line 289 "lexer.l"
 
 
 
diff --git a/lexer.l b/lexer.l
index c3b45b7..27f5181 100644 (file)
--- a/lexer.l
+++ b/lexer.l
@@ -52,7 +52,7 @@ typedef int directive_fnt(int dtoken);
 static directive_fnt df_reject, df_execute, df_executefrompath;
 static directive_fnt df_executefromdirectory, df_executebuiltin;
 static directive_fnt df_errorstostderr, df_errorstosyslog, df_errorstofile;
-static directive_fnt dfg_fdwant, dfg_setflag;
+static directive_fnt dfg_fdwant, dfg_setflag, dfg_lookupquotemode;
 static directive_fnt df_reset, df_cd, df_userrcfile, df_include;
 static directive_fnt df_includelookup, df_includedirectory;
 static directive_fnt df_message, df_error, df_quit, df_eof;
@@ -149,6 +149,8 @@ execute-builtin { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; }
 errors-to-stderr { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; }
 errors-to-syslog { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; }
 errors-to-file { lr_dir= df_errorstofile; return tokv_word_errorstofile; }
+include-lookup-quote-old { lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquoteold; }
+include-lookup-quote-new { lr_dir= dfg_lookupquotemode; return tokv_word_includelookupquotenew; }
 require-fd { lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; }
 allow-fd { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; }
 null-fd { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; }
index 575c2f1..1c3f8ef 100644 (file)
@@ -51,7 +51,7 @@ typedef int directive_fnt(int dtoken);
 static directive_fnt df_reject, df_execute, df_executefrompath;
 static directive_fnt df_executefromdirectory, df_executebuiltin;
 static directive_fnt df_errorstostderr, df_errorstosyslog, df_errorstofile;
-static directive_fnt dfg_fdwant, dfg_setflag;
+static directive_fnt dfg_fdwant, dfg_setflag, dfg_lookupquotemode;
 static directive_fnt df_reset, df_cd, df_userrcfile, df_include;
 static directive_fnt df_includelookup, df_includedirectory;
 static directive_fnt df_message, df_error, df_quit, df_eof;
index 1bdf56d..4565e32 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -1034,6 +1034,15 @@ x_err:
   return r;
 }
 
+static int oldquote = 0;
+
+int dfg_lookupquotemode(int dtoken) {
+  int r;
+  r= pa_mnl(); if (r) return r;
+  oldquote = dtoken == tokv_word_includelookupquoteold;
+  return r;
+}
+
 int df_includelookup(int dtoken) {
   static char *buildbuf=0;
   int buildbuflen=0;
@@ -1085,9 +1094,11 @@ int df_includelookup(int dtoken) {
          if (c=='/') {
            *q++= ':';
            c= '-';
-         } else if (!((c >= '0' && c <= '9') ||
+         } else if (oldquote ?
+                    !((c >= '0' && c <= '9') ||
                       (c >= 'a' && c <= 'z') ||
-                      c == '-' || c == '_')) {
+                      c == '-' || c == '_') :
+                    (c==':')) {
            *q++= ':';
          }
          *q++= c;
index 64029d8..e10c14e 100644 (file)
--- a/spec.sgml
+++ b/spec.sgml
@@ -651,6 +651,13 @@ parameter value which is the empty string will be replaced with
 <tt/:empty/ (note that this is different from a parameter not having
 any values).
 
+<p>
+(In older versions of userv, a different translation was applied:
+See <tt>https://bugs.debian.org/837391</tt>.  The old translation
+can be requested (for subsequent directives) with
+<tt/include-lookup-quote-old/, which is undone by
+<tt/include-lookup-quote-new/ and <tt/reset/.)
+
 <tag/<tt/include-directory <var/directory///
 <item>
 Read configuration from all files in directory <var/directory/ which
index 0da8a71..20122d2 100644 (file)
@@ -652,6 +652,13 @@ parameter value which is the empty string will be replaced with
 <tt/:empty/ (note that this is different from a parameter not having
 any values).
 
+<p>
+(In older versions of userv, a different translation was applied:
+See <tt>https://bugs.debian.org/837391</tt>.  The old translation
+can be requested (for subsequent directives) with
+<tt/include-lookup-quote-old/, which is undone by
+<tt/include-lookup-quote-new/ and <tt/reset/.)
+
 <tag/<tt/include-directory <var/directory///
 <item>
 Read configuration from all files in directory <var/directory/ which
index 2ecf6a6..d42cd53 100644 (file)
--- a/tokens.h
+++ b/tokens.h
@@ -47,9 +47,10 @@ enum tokens {
   tokt_string=             0x01000000,
   tokt_execmode=           0x02000000,
   tokt_ehandlemode=        0x04000000,
-  tokt_builtinservice=     0x08000000,
-  tokt_misc=               0x10000000,
-  tokt_internal=           0x20000000,
+  tokt_lookupquotemode=    0x08000000,
+  tokt_builtinservice=     0x10000000,
+  tokt_misc=               0x20000000,
+  tokt_internal=           0x40000000,
 
   toki_word_reject=                                 0x00000001,
   toki_word_executefromdirectory=                   0x00000002,
@@ -58,105 +59,107 @@ enum tokens {
   toki_word_errorstostderr=                         0x00000005,
   toki_word_errorstosyslog=                         0x00000006,
   toki_word_errorstofile=                           0x00000007,
-  toki_word_requirefd=                              0x00000008,
-  toki_word_allowfd=                                0x00000009,
-  toki_word_nullfd=                                 0x0000000a,
-  toki_word_rejectfd=                               0x0000000b,
-  toki_word_ignorefd=                               0x0000000c,
-  toki_word_setenvironment=                         0x0000000d,
-  toki_word_nosetenvironment=                       0x0000000e,
-  toki_word_suppressargs=                           0x0000000f,
-  toki_word_nosuppressargs=                         0x00000010,
-  toki_word_disconnecthup=                          0x00000011,
-  toki_word_nodisconnecthup=                        0x00000012,
-  toki_word_cd=                                     0x00000013,
-  toki_word_userrcfile=                             0x00000014,
-  toki_word_include=                                0x00000015,
-  toki_word_includeifexist=                         0x00000016,
-  toki_word_includelookup=                          0x00000017,
-  toki_word_includelookupall=                       0x00000018,
-  toki_word_includedirectory=                       0x00000019,
-  toki_word_message=                                0x0000001a,
-  toki_word_includesysconfig=                       0x0000001b,
-  toki_word_includeuserrcfile=                      0x0000001c,
-  toki_word_includeclientconfig=                    0x0000001d,
-  toki_word_quit=                                   0x0000001e,
-  toki_word_eof=                                    0x0000001f,
-  toki_word_if=                                     0x00000020,
-  toki_word_catchquit=                              0x00000021,
-  toki_word_errorspush=                             0x00000022,
-  toki_word_elif=                                   0x00000023,
-  toki_word_else=                                   0x00000024,
-  toki_word_fi=                                     0x00000025,
-  toki_word_hctac=                                  0x00000026,
-  toki_word_srorre=                                 0x00000027,
-  toki_word_glob=                                   0x00000028,
-  toki_word_range=                                  0x00000029,
-  toki_word_grep=                                   0x0000002a,
-  toki_word_environment=                            0x0000002b,
-  toki_word_parameter=                              0x0000002c,
-  toki_word_version=                                0x0000002d,
-  toki_word_toplevel=                               0x0000002e,
-  toki_word_override=                               0x0000002f,
-  toki_word_shutdown=                               0x00000030,
-  toki_word_reset=                                  0x00000031,
-  toki_word_execute=                                0x00000032,
-  toki_word_help=                                   0x00000033,
-  toki_word_service=                                0x00000034,
-  toki_word_callinguser=                            0x00000035,
-  toki_word_callinggroup=                           0x00000036,
-  toki_word_callingusershell=                       0x00000037,
-  toki_word_serviceuser=                            0x00000038,
-  toki_word_servicegroup=                           0x00000039,
-  toki_word_serviceusershell=                       0x0000003a,
-  toki_syslog_debug=                                0x0000003b,
-  toki_syslog_info=                                 0x0000003c,
-  toki_syslog_notice=                               0x0000003d,
-  toki_syslog_warning=                              0x0000003e,
-  toki_syslog_err=                                  0x0000003f,
-  toki_syslog_crit=                                 0x00000040,
-  toki_syslog_alert=                                0x00000041,
-  toki_syslog_emerg=                                0x00000042,
-  toki_syslog_authpriv=                             0x00000043,
-  toki_syslog_cron=                                 0x00000044,
-  toki_syslog_daemon=                               0x00000045,
-  toki_syslog_kern=                                 0x00000046,
-  toki_syslog_lpr=                                  0x00000047,
-  toki_syslog_mail=                                 0x00000048,
-  toki_syslog_news=                                 0x00000049,
-  toki_syslog_syslog=                               0x0000004a,
-  toki_syslog_user=                                 0x0000004b,
-  toki_syslog_uucp=                                 0x0000004c,
-  toki_syslog_local0=                               0x0000004d,
-  toki_syslog_local1=                               0x0000004e,
-  toki_syslog_local2=                               0x0000004f,
-  toki_syslog_local3=                               0x00000050,
-  toki_syslog_local4=                               0x00000051,
-  toki_syslog_local5=                               0x00000052,
-  toki_syslog_local6=                               0x00000053,
-  toki_syslog_local7=                               0x00000054,
-  toki_word_read=                                   0x00000055,
-  toki_word_write=                                  0x00000056,
-  toki_ordinal=                                     0x00000057,
-  toki_fdrange=                                     0x00000058,
-  toki_fdstoend=                                    0x00000059,
-  toki_dollar=                                      0x0000005a,
-  toki_word_stdin=                                  0x0000005b,
-  toki_word_stdout=                                 0x0000005c,
-  toki_word_stderr=                                 0x0000005d,
-  toki_lwsp=                                        0x0000005e,
-  toki_newline=                                     0x0000005f,
-  toki_barestring=                                  0x00000060,
-  toki_quotedstring=                                0x00000061,
-  toki_eof=                                         0x00000062,
-  toki_quit=                                        0x00000063,
-  toki_error=                                       0x00000064,
-  toki_openparen=                                   0x00000065,
-  toki_closeparen=                                  0x00000066,
-  toki_not=                                         0x00000067,
-  toki_and=                                         0x00000068,
-  toki_or=                                          0x00000069,
-  toki_word_error=                                  0x0000006a,
+  toki_word_includelookupquoteold=                  0x00000008,
+  toki_word_includelookupquotenew=                  0x00000009,
+  toki_word_requirefd=                              0x0000000a,
+  toki_word_allowfd=                                0x0000000b,
+  toki_word_nullfd=                                 0x0000000c,
+  toki_word_rejectfd=                               0x0000000d,
+  toki_word_ignorefd=                               0x0000000e,
+  toki_word_setenvironment=                         0x0000000f,
+  toki_word_nosetenvironment=                       0x00000010,
+  toki_word_suppressargs=                           0x00000011,
+  toki_word_nosuppressargs=                         0x00000012,
+  toki_word_disconnecthup=                          0x00000013,
+  toki_word_nodisconnecthup=                        0x00000014,
+  toki_word_cd=                                     0x00000015,
+  toki_word_userrcfile=                             0x00000016,
+  toki_word_include=                                0x00000017,
+  toki_word_includeifexist=                         0x00000018,
+  toki_word_includelookup=                          0x00000019,
+  toki_word_includelookupall=                       0x0000001a,
+  toki_word_includedirectory=                       0x0000001b,
+  toki_word_message=                                0x0000001c,
+  toki_word_includesysconfig=                       0x0000001d,
+  toki_word_includeuserrcfile=                      0x0000001e,
+  toki_word_includeclientconfig=                    0x0000001f,
+  toki_word_quit=                                   0x00000020,
+  toki_word_eof=                                    0x00000021,
+  toki_word_if=                                     0x00000022,
+  toki_word_catchquit=                              0x00000023,
+  toki_word_errorspush=                             0x00000024,
+  toki_word_elif=                                   0x00000025,
+  toki_word_else=                                   0x00000026,
+  toki_word_fi=                                     0x00000027,
+  toki_word_hctac=                                  0x00000028,
+  toki_word_srorre=                                 0x00000029,
+  toki_word_glob=                                   0x0000002a,
+  toki_word_range=                                  0x0000002b,
+  toki_word_grep=                                   0x0000002c,
+  toki_word_environment=                            0x0000002d,
+  toki_word_parameter=                              0x0000002e,
+  toki_word_version=                                0x0000002f,
+  toki_word_toplevel=                               0x00000030,
+  toki_word_override=                               0x00000031,
+  toki_word_shutdown=                               0x00000032,
+  toki_word_reset=                                  0x00000033,
+  toki_word_execute=                                0x00000034,
+  toki_word_help=                                   0x00000035,
+  toki_word_service=                                0x00000036,
+  toki_word_callinguser=                            0x00000037,
+  toki_word_callinggroup=                           0x00000038,
+  toki_word_callingusershell=                       0x00000039,
+  toki_word_serviceuser=                            0x0000003a,
+  toki_word_servicegroup=                           0x0000003b,
+  toki_word_serviceusershell=                       0x0000003c,
+  toki_syslog_debug=                                0x0000003d,
+  toki_syslog_info=                                 0x0000003e,
+  toki_syslog_notice=                               0x0000003f,
+  toki_syslog_warning=                              0x00000040,
+  toki_syslog_err=                                  0x00000041,
+  toki_syslog_crit=                                 0x00000042,
+  toki_syslog_alert=                                0x00000043,
+  toki_syslog_emerg=                                0x00000044,
+  toki_syslog_authpriv=                             0x00000045,
+  toki_syslog_cron=                                 0x00000046,
+  toki_syslog_daemon=                               0x00000047,
+  toki_syslog_kern=                                 0x00000048,
+  toki_syslog_lpr=                                  0x00000049,
+  toki_syslog_mail=                                 0x0000004a,
+  toki_syslog_news=                                 0x0000004b,
+  toki_syslog_syslog=                               0x0000004c,
+  toki_syslog_user=                                 0x0000004d,
+  toki_syslog_uucp=                                 0x0000004e,
+  toki_syslog_local0=                               0x0000004f,
+  toki_syslog_local1=                               0x00000050,
+  toki_syslog_local2=                               0x00000051,
+  toki_syslog_local3=                               0x00000052,
+  toki_syslog_local4=                               0x00000053,
+  toki_syslog_local5=                               0x00000054,
+  toki_syslog_local6=                               0x00000055,
+  toki_syslog_local7=                               0x00000056,
+  toki_word_read=                                   0x00000057,
+  toki_word_write=                                  0x00000058,
+  toki_ordinal=                                     0x00000059,
+  toki_fdrange=                                     0x0000005a,
+  toki_fdstoend=                                    0x0000005b,
+  toki_dollar=                                      0x0000005c,
+  toki_word_stdin=                                  0x0000005d,
+  toki_word_stdout=                                 0x0000005e,
+  toki_word_stderr=                                 0x0000005f,
+  toki_lwsp=                                        0x00000060,
+  toki_newline=                                     0x00000061,
+  toki_barestring=                                  0x00000062,
+  toki_quotedstring=                                0x00000063,
+  toki_eof=                                         0x00000064,
+  toki_quit=                                        0x00000065,
+  toki_error=                                       0x00000066,
+  toki_openparen=                                   0x00000067,
+  toki_closeparen=                                  0x00000068,
+  toki_not=                                         0x00000069,
+  toki_and=                                         0x0000006a,
+  toki_or=                                          0x0000006b,
+  toki_word_error=                                  0x0000006c,
 
   tokv_word_reject=             tokt_directive|tokt_execmode|tokr_word|toki_word_reject,
   tokv_word_executefromdirectory=tokt_directive|tokt_execmode|tokr_word|toki_word_executefromdirectory,
@@ -165,6 +168,8 @@ enum tokens {
   tokv_word_errorstostderr=     tokt_directive|tokt_ehandlemode|tokr_word|toki_word_errorstostderr,
   tokv_word_errorstosyslog=     tokt_directive|tokt_ehandlemode|tokr_word|toki_word_errorstosyslog,
   tokv_word_errorstofile=       tokt_directive|tokt_ehandlemode|tokr_word|toki_word_errorstofile,
+  tokv_word_includelookupquoteold=tokt_directive|tokt_lookupquotemode|tokr_word|toki_word_includelookupquoteold,
+  tokv_word_includelookupquotenew=tokt_directive|tokt_lookupquotemode|tokr_word|toki_word_includelookupquotenew,
   tokv_word_requirefd=          tokt_directive|tokr_word|toki_word_requirefd,
   tokv_word_allowfd=            tokt_directive|tokr_word|toki_word_allowfd,
   tokv_word_nullfd=             tokt_directive|tokr_word|toki_word_nullfd,