From 6cab4f8fc3de7f4e4cd5ab5a1989017ea8e695fe Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 23 Jan 2017 14:30:43 +0000 Subject: [PATCH] Correct quoting of include-lookup directory. Closes:#837391. (With new directives to somewhat ease backward-compatibility.) --- daemon.h | 1 + debian/changelog | 2 + language.i4 | 5 + lexer.c | 1103 +++++++++++++++++++++++----------------------- lexer.l | 4 +- lexer.l.m4 | 2 +- parser.c | 15 +- spec.sgml | 7 + spec.sgml.in | 7 + tokens.h | 209 ++++----- 10 files changed, 708 insertions(+), 647 deletions(-) diff --git a/daemon.h b/daemon.h index 235271e..b1e8622 100644 --- 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 diff --git a/debian/changelog b/debian/changelog index eb460e2..2642ac5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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. diff --git a/language.i4 b/language.i4 index 9b328e6..6227daa 100644 --- a/language.i4 +++ b/language.i4 @@ -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 --- 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 "" +#define YY_NO_INPUT + +#line 975 "" #define INITIAL 0 @@ -1176,10 +1187,10 @@ YY_DECL } { -#line 143 "lexer.l" +#line 145 "lexer.l" -#line 1183 "" +#line 1194 "" 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 "" +#line 1844 "" 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 --- 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; } diff --git a/lexer.l.m4 b/lexer.l.m4 index 575c2f1..1c3f8ef 100644 --- a/lexer.l.m4 +++ b/lexer.l.m4 @@ -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; diff --git a/parser.c b/parser.c index 1bdf56d..4565e32 100644 --- 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; diff --git a/spec.sgml b/spec.sgml index 64029d8..e10c14e 100644 --- a/spec.sgml +++ b/spec.sgml @@ -651,6 +651,13 @@ parameter value which is the empty string will be replaced with +(In older versions of userv, a different translation was applied: +See https://bugs.debian.org/837391. The old translation +can be requested (for subsequent directives) with + Read configuration from all files in directory +(In older versions of userv, a different translation was applied: +See https://bugs.debian.org/837391. The old translation +can be requested (for subsequent directives) with + Read configuration from all files in directory