From 5a65c28db362c4d62419075c5c9e416fd855a9f9 Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Wed, 29 Jun 2011 02:55:42 -0700 Subject: [PATCH] Add in test cases for --socket (and documentation). --- docs/libmemcached_configuration.rst | 4 + libmemcached/options/parser.cc | 93 +-- libmemcached/options/parser.yy | 7 +- libmemcached/options/scanner.cc | 1154 ++++++++++++++------------- libmemcached/options/scanner.h | 2 +- libmemcached/options/scanner.l | 7 +- libmemcached/server.cc | 35 +- libmemcached/server.h | 3 + tests/namespace.cc | 1 + tests/parser.cc | 49 +- 10 files changed, 719 insertions(+), 636 deletions(-) diff --git a/docs/libmemcached_configuration.rst b/docs/libmemcached_configuration.rst index 3c32d5d8..71a2c5bb 100644 --- a/docs/libmemcached_configuration.rst +++ b/docs/libmemcached_configuration.rst @@ -29,6 +29,10 @@ that you can use in your application directly. Provide a servername to be used by the client. Providing a weight will cause weighting to occur with all hosts with each server getting a default weight of 1. +.. describe:: --SOCKET=/? + +Provide a filepath to a UNIX socket file. Providing a weight will cause weighting to occur with all hosts with each server getting a default weight of 1. + .. describe:: --VERIFY-KEY Verify that keys that are being used fit within the design of the protocol being used. diff --git a/libmemcached/options/parser.cc b/libmemcached/options/parser.cc index e216daa8..936cc97b 100644 --- a/libmemcached/options/parser.cc +++ b/libmemcached/options/parser.cc @@ -442,7 +442,7 @@ union yyalloc /* YYNRULES -- Number of rules. */ #define YYNRULES 67 /* YYNRULES -- Number of states. */ -#define YYNSTATES 84 +#define YYNSTATES 85 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -495,12 +495,12 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint8 yyprhs[] = { 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, - 21, 23, 27, 32, 37, 40, 43, 46, 49, 51, - 54, 57, 62, 65, 68, 70, 72, 74, 76, 78, - 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, - 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, - 120, 121, 123, 124, 126, 128, 130, 132, 134, 136, - 138, 140, 142, 144, 146, 148, 150, 152 + 21, 23, 27, 32, 37, 41, 44, 47, 50, 52, + 55, 58, 63, 66, 69, 71, 73, 75, 77, 79, + 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, + 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, + 121, 122, 124, 125, 127, 129, 131, 133, 135, 137, + 139, 141, 143, 145, 147, 149, 151, 153 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -509,19 +509,19 @@ static const yytype_int8 yyrhs[] = 76, 0, -1, 77, -1, 76, 74, 77, -1, 78, -1, 3, -1, 10, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, 74, 85, -1, 11, 70, 82, - 83, -1, 11, 69, 82, 83, -1, 12, 85, -1, - 9, 85, -1, 47, 66, -1, 48, 66, -1, 79, - -1, 46, 85, -1, 20, 86, -1, 20, 86, 63, - 84, -1, 21, 84, -1, 80, 66, -1, 81, -1, - 40, -1, 33, -1, 19, -1, 25, -1, 23, -1, - 24, -1, 29, -1, 30, -1, 32, -1, 34, -1, - 35, -1, 36, -1, 37, -1, 17, -1, 18, -1, - 22, -1, 28, -1, 31, -1, 38, -1, 39, -1, - 45, -1, 43, -1, 44, -1, 41, -1, 42, -1, - -1, 67, -1, -1, 68, -1, 49, -1, 50, -1, - 51, -1, 52, -1, 53, -1, 54, -1, 55, -1, - 56, -1, 57, -1, 71, -1, 72, -1, 58, -1, - 59, -1, 60, -1 + 83, -1, 11, 69, 82, 83, -1, 12, 85, 83, + -1, 9, 85, -1, 47, 66, -1, 48, 66, -1, + 79, -1, 46, 85, -1, 20, 86, -1, 20, 86, + 63, 84, -1, 21, 84, -1, 80, 66, -1, 81, + -1, 40, -1, 33, -1, 19, -1, 25, -1, 23, + -1, 24, -1, 29, -1, 30, -1, 32, -1, 34, + -1, 35, -1, 36, -1, 37, -1, 17, -1, 18, + -1, 22, -1, 28, -1, 31, -1, 38, -1, 39, + -1, 45, -1, 43, -1, 44, -1, 41, -1, 42, + -1, -1, 67, -1, -1, 68, -1, 49, -1, 50, + -1, 51, -1, 52, -1, 53, -1, 54, -1, 55, + -1, 56, -1, 57, -1, 71, -1, 72, -1, 58, + -1, 59, -1, 60, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -533,7 +533,7 @@ static const yytype_uint16 yyrline[] = 309, 313, 317, 321, 325, 329, 333, 337, 344, 348, 352, 356, 360, 364, 368, 372, 376, 380, 384, 388, 395, 396, 401, 402, 407, 411, 415, 419, 423, 427, - 431, 435, 439, 446, 450, 458, 462, 466 + 431, 435, 439, 446, 450, 461, 465, 469 }; #endif @@ -595,7 +595,7 @@ static const yytype_uint8 yyr1[] = static const yytype_uint8 yyr2[] = { 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 3, 4, 4, 2, 2, 2, 2, 1, 2, + 1, 3, 4, 4, 3, 2, 2, 2, 1, 2, 2, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -613,16 +613,16 @@ static const yytype_uint8 yydefact[] = 41, 31, 32, 42, 33, 26, 34, 35, 36, 37, 43, 44, 25, 48, 49, 46, 47, 45, 0, 0, 0, 0, 2, 4, 18, 0, 24, 0, 63, 64, - 15, 50, 50, 14, 65, 66, 67, 20, 54, 55, + 15, 50, 50, 52, 65, 66, 67, 20, 54, 55, 56, 57, 58, 59, 60, 61, 62, 22, 19, 16, - 17, 1, 0, 23, 11, 51, 52, 52, 0, 3, - 53, 13, 12, 21 + 17, 1, 0, 23, 11, 51, 52, 52, 53, 14, + 0, 3, 13, 12, 21 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 41, 42, 43, 44, 45, 46, 76, 81, 67, + -1, 41, 42, 43, 44, 45, 46, 76, 79, 67, 50, 57 }; @@ -635,17 +635,17 @@ static const yytype_int8 yypact[] = -24, -61, -61, -61, -47, 13, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -24, -41, - -15, 0, -61, -61, -61, -13, -61, -24, -61, -61, - -61, -12, -12, -61, -61, -61, -61, -9, -61, -61, + -15, 0, -61, -61, -61, -11, -61, -24, -61, -61, + -61, -10, -10, -12, -61, -61, -61, -5, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -2, -61, -61, -61, -11, -11, 13, -61, - -61, -61, -61, -61 + -61, -61, -2, -61, -61, -61, -12, -12, -61, -61, + 13, -61, -61, -61, -61 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -61, -61, -16, -61, -61, -61, -61, 6, -18, -7, + -61, -61, -13, -61, -61, -61, -61, 8, -23, -9, 14, -61 }; @@ -661,9 +661,9 @@ static const yytype_uint8 yytable[] = 16, 17, 18, 19, 53, 69, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 48, 49, 51, - 52, 70, 68, 73, 78, 75, 79, 80, 77, 82, - 0, 74, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 83, 0, 0, 72 + 52, 70, 68, 82, 83, 73, 78, 75, 80, 81, + 77, 74, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 84, 0, 0, 72 }; static const yytype_int8 yycheck[] = @@ -673,9 +673,9 @@ static const yytype_int8 yycheck[] = 22, 23, 24, 25, 10, 66, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 71, 72, 69, - 70, 66, 38, 66, 63, 67, 72, 68, 52, 77, - -1, 47, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 78, -1, -1, 74 + 70, 66, 38, 76, 77, 66, 68, 67, 63, 72, + 52, 47, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 80, -1, -1, 74 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -689,8 +689,8 @@ static const yytype_uint8 yystos[] = 48, 76, 77, 78, 79, 80, 81, 74, 71, 72, 85, 69, 70, 85, 58, 59, 60, 86, 49, 50, 51, 52, 53, 54, 55, 56, 57, 84, 85, 66, - 66, 0, 74, 66, 85, 67, 82, 82, 63, 77, - 68, 83, 83, 84 + 66, 0, 74, 66, 85, 67, 82, 82, 68, 83, + 63, 77, 83, 83, 84 }; #define yyerrok (yyerrstatus = 0) @@ -1624,7 +1624,7 @@ yyreduce: /* Line 1464 of yacc.c */ #line 219 "libmemcached/options/parser.yy" { - if (memcached_failed(context->rc= memcached_server_add_unix_socket(context->memc, (yyvsp[(2) - (2)].string).c_str))) + if (memcached_failed(context->rc= memcached_server_add_unix_socket_with_weight(context->memc, (yyvsp[(2) - (3)].string).c_str, (yyvsp[(3) - (3)].number)))) { parser_abort(context, NULL); } @@ -2081,15 +2081,18 @@ yyreduce: /* Line 1464 of yacc.c */ #line 451 "libmemcached/options/parser.yy" { + (yyval.string)= (yyvsp[(1) - (1)].string); + #if 0 (yyval.string).c_str= (yyvsp[(1) - (1)].string).c_str +1; // +1 to move use passed the initial quote (yyval.string).size= (yyvsp[(1) - (1)].string).size -2; // -2 removes the begin and end quote + #endif ;} break; case 65: /* Line 1464 of yacc.c */ -#line 459 "libmemcached/options/parser.yy" +#line 462 "libmemcached/options/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_CONSISTENT; ;} @@ -2098,7 +2101,7 @@ yyreduce: case 66: /* Line 1464 of yacc.c */ -#line 463 "libmemcached/options/parser.yy" +#line 466 "libmemcached/options/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_MODULA; ;} @@ -2107,7 +2110,7 @@ yyreduce: case 67: /* Line 1464 of yacc.c */ -#line 467 "libmemcached/options/parser.yy" +#line 470 "libmemcached/options/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_RANDOM; ;} @@ -2116,7 +2119,7 @@ yyreduce: /* Line 1464 of yacc.c */ -#line 2120 "libmemcached/options/parser.cc" +#line 2123 "libmemcached/options/parser.cc" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2328,7 +2331,7 @@ yyreturn: /* Line 1684 of yacc.c */ -#line 472 "libmemcached/options/parser.yy" +#line 475 "libmemcached/options/parser.yy" void Context::start() diff --git a/libmemcached/options/parser.yy b/libmemcached/options/parser.yy index 66428b89..f9388af3 100644 --- a/libmemcached/options/parser.yy +++ b/libmemcached/options/parser.yy @@ -215,9 +215,9 @@ expression: } context->unset_server(); } - | SOCKET string + | SOCKET string optional_weight { - if (memcached_failed(context->rc= memcached_server_add_unix_socket(context->memc, $2.c_str))) + if (memcached_failed(context->rc= memcached_server_add_unix_socket_with_weight(context->memc, $2.c_str, $3))) { parser_abort(context, NULL); } @@ -449,8 +449,11 @@ string: } | QUOTED_STRING { + $$= $1; + #if 0 $$.c_str= $1.c_str +1; // +1 to move use passed the initial quote $$.size= $1.size -2; // -2 removes the begin and end quote + #endif } ; diff --git a/libmemcached/options/scanner.cc b/libmemcached/options/scanner.cc index d0009fae..072d6680 100644 --- a/libmemcached/options/scanner.cc +++ b/libmemcached/options/scanner.cc @@ -458,65 +458,65 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[515] = +static yyconst flex_int16_t yy_accept[521] = { 0, 0, 0, 66, 64, 5, 5, 1, 64, 64, 64, 2, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 0, 63, 48, 0, 0, - 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 64, 64, 64, 64, 0, 63, 0, 48, + 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 6, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 4, 62, 62, 2, 3, - 62, 53, 62, 44, 62, 62, 62, 62, 62, 62, - 52, 62, 62, 62, 62, 62, 62, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - - 48, 48, 48, 48, 48, 48, 48, 4, 0, 62, - 2, 3, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 46, 48, 48, 48, 48, - 48, 0, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 4, - 62, 62, 3, 62, 42, 45, 47, 62, 0, 58, - 62, 62, 62, 62, 62, 41, 62, 48, 48, 48, - 48, 48, 48, 0, 0, 0, 48, 48, 48, 48, - 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, - 0, 0, 48, 48, 4, 0, 62, 3, 62, 0, - - 62, 62, 62, 62, 50, 59, 51, 62, 48, 48, - 48, 48, 48, 0, 15, 0, 0, 0, 48, 48, - 48, 0, 0, 48, 0, 48, 48, 48, 0, 48, - 0, 48, 0, 0, 0, 0, 48, 4, 61, 62, - 62, 62, 62, 56, 54, 40, 60, 43, 48, 48, - 48, 48, 48, 0, 0, 0, 0, 48, 48, 48, - 0, 0, 48, 0, 48, 0, 48, 0, 48, 0, - 48, 0, 0, 0, 0, 48, 61, 62, 57, 55, - 0, 0, 48, 48, 48, 0, 0, 0, 0, 48, - 19, 0, 0, 0, 0, 48, 0, 0, 0, 7, - - 0, 0, 8, 0, 48, 0, 0, 34, 0, 0, - 61, 62, 0, 0, 48, 0, 48, 0, 0, 0, - 0, 48, 0, 0, 0, 0, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 0, 0, 48, 0, 48, 0, 0, 0, 0, 48, - 0, 0, 38, 37, 48, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 48, 0, 0, 0, 0, 39, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, - 0, 0, 36, 0, 0, 0, 0, 48, 0, 0, + 0, 0, 0, 0, 6, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 4, 62, + 62, 2, 3, 62, 53, 62, 44, 62, 62, 62, + 62, 62, 62, 63, 0, 62, 52, 62, 62, 62, + 62, 62, 62, 48, 48, 48, 48, 48, 48, 48, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 30, 0, 0, 33, 0, 0, 0, 0, 48, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, - 26, 0, 0, 0, 32, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 25, 0, 0, 9, 10, 11, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 27, 28, 0, 0, 0, - - 0, 0, 14, 16, 20, 0, 0, 0, 0, 0, - 0, 22, 24, 0 + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 4, 0, 62, 2, 3, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 46, 48, 48, 48, 48, 48, 0, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 4, 62, 62, 3, 62, + 42, 45, 47, 62, 0, 58, 62, 62, 62, 62, + 62, 41, 62, 48, 48, 48, 48, 48, 48, 0, + 0, 0, 48, 48, 48, 48, 48, 48, 0, 48, + 48, 48, 0, 48, 48, 48, 0, 0, 48, 48, + + 4, 0, 62, 3, 62, 0, 62, 62, 62, 62, + 50, 59, 51, 62, 48, 48, 48, 48, 48, 0, + 15, 0, 0, 0, 48, 48, 48, 0, 0, 48, + 0, 48, 48, 48, 0, 48, 0, 48, 0, 0, + 0, 0, 48, 4, 61, 62, 62, 62, 62, 56, + 54, 40, 60, 43, 48, 48, 48, 48, 48, 0, + 0, 0, 0, 48, 48, 48, 0, 0, 48, 0, + 48, 0, 48, 0, 48, 0, 48, 0, 0, 0, + 0, 48, 61, 62, 57, 55, 0, 0, 48, 48, + 48, 0, 0, 0, 0, 48, 19, 0, 0, 0, + + 0, 48, 0, 0, 0, 7, 0, 0, 8, 0, + 48, 0, 0, 34, 0, 0, 61, 62, 0, 0, + 48, 0, 48, 0, 0, 0, 0, 48, 0, 0, + 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 0, 0, 48, 0, + 48, 0, 0, 0, 0, 48, 0, 0, 38, 37, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 48, 0, + 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 36, 0, + + 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 33, 0, 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 23, 0, 0, 26, 0, 0, 0, + 32, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 9, 10, 11, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + + 0, 27, 28, 0, 0, 0, 0, 0, 14, 16, + 20, 0, 0, 0, 0, 0, 0, 22, 24, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -530,11 +530,11 @@ static yyconst flex_int32_t yy_ec[256] = 19, 1, 20, 1, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 1, 1, 1, 1, 47, 1, 48, 49, 50, 51, + 1, 47, 1, 1, 48, 1, 49, 50, 51, 52, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 1, 1, 1, 1, 1, 1, 1, 1, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -551,335 +551,343 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[74] = +static yyconst flex_int32_t yy_meta[75] = { 0, - 1, 1, 2, 1, 3, 1, 1, 3, 3, 1, - 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3 + 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2 } ; -static yyconst flex_int16_t yy_base[519] = +static yyconst flex_int16_t yy_base[526] = { 0, - 0, 658, 647, 1648, 1648, 1648, 1648, 631, 626, 613, - 65, 72, 0, 55, 50, 57, 71, 55, 62, 72, - 74, 78, 75, 63, 621, 617, 616, 132, 195, 103, - 208, 251, 215, 235, 228, 230, 237, 245, 265, 281, - 286, 294, 296, 311, 313, 327, 343, 354, 361, 370, - 615, 1648, 417, 305, 69, 77, 86, 75, 347, 78, - 362, 402, 91, 113, 189, 417, 397, 482, 525, 489, - 413, 466, 502, 507, 509, 514, 516, 542, 550, 557, - 569, 576, 578, 590, 621, 598, 623, 215, 232, 246, - 242, 248, 605, 278, 275, 293, 354, 295, 303, 402, - - 311, 330, 427, 331, 335, 355, 358, 638, 671, 714, - 757, 645, 634, 686, 669, 692, 694, 747, 738, 703, - 749, 775, 701, 781, 790, 783, 376, 423, 566, 421, - 453, 778, 521, 523, 530, 532, 537, 569, 604, 573, - 627, 624, 602, 638, 631, 688, 597, 759, 708, 838, - 851, 824, 861, 874, 876, 881, 883, 888, 894, 896, - 901, 910, 928, 942, 937, 951, 953, 711, 735, 749, - 768, 769, 501, 767, 788, 775, 778, 782, 794, 594, - 593, 796, 840, 845, 850, 875, 872, 901, 582, 903, - 932, 913, 568, 929, 997, 1014, 1057, 1648, 996, 969, - - 959, 987, 1012, 1036, 1030, 1041, 1043, 1048, 943, 995, - 1013, 1031, 1026, 1015, 1648, 1036, 1033, 1052, 1044, 1052, - 1048, 1049, 1058, 1059, 1064, 1069, 552, 1058, 1068, 1058, - 1071, 1062, 1076, 1073, 1085, 1086, 1067, 1648, 1135, 1124, - 1133, 1148, 1154, 1159, 1165, 1167, 1178, 1183, 537, 527, - 1113, 1126, 1155, 1149, 1159, 524, 523, 1168, 1145, 519, - 1165, 1178, 1167, 1164, 518, 1160, 470, 1169, 549, 1173, - 1169, 1185, 1189, 1179, 1197, 440, 1241, 1239, 1223, 1254, - 1197, 1200, 1201, 439, 1200, 1211, 1225, 1231, 1226, 1248, - 0, 1237, 1242, 1232, 1243, 1233, 1255, 1255, 1253, 1648, - - 1258, 1246, 1648, 1248, 417, 1253, 1265, 1648, 1252, 1262, - 1313, 1318, 1259, 1280, 1288, 1275, 1285, 1300, 411, 1291, - 1309, 1309, 1309, 1311, 384, 381, 1312, 1304, 1320, 1310, - 1309, 1320, 1321, 1307, 1325, 1330, 1317, 1329, 1328, 1374, - 1319, 1330, 383, 1340, 1355, 376, 1344, 1363, 1349, 336, - 339, 1355, 1648, 1648, 331, 1350, 1363, 1368, 1354, 1374, - 1364, 1360, 1379, 1369, 1378, 1382, 1648, 1359, 1365, 1365, - 1381, 1375, 1374, 1376, 1391, 1387, 1398, 1648, 1400, 1400, - 1404, 1403, 1412, 1410, 1406, 1405, 1424, 1648, 1410, 1422, - 1420, 1408, 1648, 1419, 1430, 1427, 1432, 1424, 1438, 1420, - - 1436, 1424, 1438, 1424, 1441, 312, 1442, 1436, 306, 301, - 298, 1648, 1450, 1470, 1648, 1473, 1458, 1466, 1464, 281, - 1467, 1476, 1462, 1470, 1469, 274, 1470, 1648, 1483, 1468, - 1648, 1470, 1471, 1486, 1648, 1477, 1473, 1489, 1474, 1648, - 1491, 1479, 1495, 1499, 1489, 1648, 1499, 264, 252, 1517, - 1520, 1648, 1518, 1512, 238, 1512, 1514, 1521, 1527, 1518, - 1528, 1530, 1521, 1648, 1515, 1516, 1648, 1648, 1648, 229, - 1527, 1543, 228, 1534, 1543, 1544, 1543, 1544, 1545, 1648, - 1550, 1534, 1648, 215, 1553, 1554, 1547, 199, 196, 1577, - 1572, 1648, 1565, 143, 1563, 1648, 1648, 1581, 120, 119, - - 1569, 1583, 1648, 1648, 1648, 1584, 1572, 1590, 1574, 1590, - 116, 1648, 1648, 1648, 1641, 126, 1644, 113 + 0, 622, 626, 1711, 1711, 1711, 1711, 70, 617, 597, + 67, 74, 0, 57, 52, 59, 73, 57, 64, 74, + 610, 77, 79, 77, 65, 609, 101, 1711, 606, 138, + 202, 215, 217, 230, 237, 250, 252, 259, 265, 277, + 282, 287, 297, 271, 315, 377, 323, 342, 350, 359, + 364, 396, 401, 591, 1711, 449, 242, 73, 80, 89, + 76, 378, 78, 397, 398, 91, 76, 91, 441, 328, + 515, 528, 481, 499, 421, 541, 543, 548, 553, 559, + 565, 576, 590, 595, 649, 0, 597, 622, 614, 624, + 656, 632, 674, 85, 131, 124, 230, 249, 572, 260, + + 272, 285, 403, 300, 319, 375, 336, 376, 650, 381, + 401, 415, 436, 717, 730, 743, 756, 768, 781, 787, + 789, 797, 803, 808, 825, 810, 838, 852, 854, 863, + 870, 702, 454, 455, 651, 442, 456, 656, 461, 534, + 538, 533, 537, 562, 571, 581, 628, 642, 570, 655, + 650, 656, 569, 687, 664, 893, 921, 872, 928, 907, + 879, 942, 944, 949, 951, 958, 967, 973, 975, 980, + 993, 995, 1000, 660, 683, 720, 750, 755, 126, 755, + 795, 786, 787, 805, 860, 567, 564, 856, 856, 855, + 941, 969, 971, 987, 547, 981, 996, 976, 546, 999, + + 1048, 1062, 1075, 1711, 1088, 1090, 1024, 1097, 1106, 1112, + 1117, 1124, 1132, 1134, 1012, 1043, 1089, 1095, 1090, 1081, + 1711, 1087, 1085, 1107, 1099, 1116, 1111, 1110, 1120, 1124, + 1132, 1139, 527, 1128, 1138, 1128, 1141, 1132, 1146, 1139, + 1151, 1159, 1139, 1711, 1205, 1182, 1199, 1218, 1220, 1228, + 1233, 1235, 1240, 1246, 526, 517, 1165, 1192, 1217, 1217, + 1225, 514, 513, 1235, 1212, 472, 1229, 1240, 1230, 1229, + 471, 1223, 457, 1231, 258, 1230, 1230, 1246, 1248, 1237, + 1254, 456, 1297, 1310, 1312, 1317, 1243, 1257, 1258, 451, + 1263, 1287, 1289, 1293, 1288, 1310, 0, 1299, 1302, 1292, + + 1304, 1293, 1315, 1315, 1313, 1711, 1318, 1308, 1711, 1309, + 406, 1313, 1325, 1711, 1311, 1321, 1376, 1378, 1316, 1348, + 1363, 1349, 1351, 1364, 403, 1355, 1373, 1370, 1371, 1374, + 373, 372, 1375, 1367, 1382, 1371, 1370, 1381, 1382, 1368, + 1386, 1418, 1378, 1391, 1388, 1406, 1394, 1405, 367, 1414, + 1415, 362, 1402, 1423, 1409, 346, 352, 1415, 1711, 1711, + 348, 1410, 1423, 1428, 1414, 1433, 1424, 1420, 1439, 1429, + 1438, 1442, 1711, 1419, 1425, 1425, 1442, 1436, 1439, 1448, + 1464, 1469, 1473, 1711, 1461, 1459, 1463, 1463, 1472, 1470, + 1466, 1465, 1484, 1711, 1470, 1482, 1480, 1469, 1711, 1480, + + 1491, 1488, 1493, 1485, 1499, 1481, 1497, 1486, 1500, 1490, + 1513, 334, 1516, 1510, 333, 340, 336, 1711, 1512, 1530, + 1711, 1533, 1518, 1527, 1525, 322, 1528, 1537, 1523, 1531, + 1529, 321, 1531, 1711, 1544, 1530, 1711, 1532, 1533, 1548, + 1711, 1539, 1535, 1551, 1536, 1711, 1553, 1542, 1558, 1565, + 1562, 1711, 1565, 319, 289, 1578, 1581, 1711, 1579, 1573, + 285, 1573, 1576, 1583, 1589, 1580, 1590, 1591, 1582, 1711, + 1577, 1578, 1711, 1711, 1711, 282, 1590, 1606, 253, 1597, + 1606, 1607, 1606, 1607, 1608, 1711, 1613, 1598, 1711, 243, + 1616, 1621, 1612, 237, 221, 1630, 1632, 1711, 1627, 229, + + 1625, 1711, 1711, 1643, 217, 208, 1631, 1646, 1711, 1711, + 1711, 1647, 1635, 1653, 1636, 1652, 202, 1711, 1711, 1711, + 1704, 154, 1706, 131, 1708 } ; -static yyconst flex_int16_t yy_def[519] = +static yyconst flex_int16_t yy_def[526] = { 0, - 514, 1, 514, 514, 514, 514, 514, 515, 514, 514, - 516, 514, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 517, 515, 515, 514, 514, 518, - 518, 518, 514, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 517, 514, 28, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 514, 518, 518, 518, 514, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - - 53, 53, 53, 53, 53, 53, 53, 514, 518, 518, - 518, 514, 518, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 53, 53, 53, 53, - 53, 514, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 514, - 518, 518, 514, 518, 518, 518, 518, 518, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 53, 53, 53, - 53, 53, 53, 514, 514, 514, 53, 53, 53, 53, - 53, 53, 514, 53, 53, 53, 514, 53, 53, 53, - 514, 514, 53, 53, 514, 518, 518, 514, 518, 518, - - 518, 518, 518, 518, 518, 518, 518, 518, 53, 53, - 53, 53, 53, 514, 514, 514, 514, 514, 53, 53, - 53, 514, 514, 53, 514, 53, 53, 53, 514, 53, - 514, 53, 514, 514, 514, 514, 53, 514, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 53, 53, - 53, 53, 53, 514, 514, 514, 514, 53, 53, 53, - 514, 514, 53, 514, 53, 514, 53, 514, 53, 514, - 53, 514, 514, 514, 514, 53, 518, 518, 518, 518, - 514, 514, 53, 53, 53, 514, 514, 514, 514, 53, - 53, 514, 514, 514, 514, 53, 514, 514, 514, 514, - - 514, 514, 514, 514, 53, 514, 514, 514, 514, 514, - 518, 518, 514, 514, 53, 514, 53, 514, 514, 514, - 514, 53, 514, 514, 514, 514, 53, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 518, - 514, 514, 53, 514, 53, 514, 514, 514, 514, 53, - 514, 514, 514, 514, 53, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 53, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 53, 514, 514, - - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 53, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 0, 514, 514, 514, 514 + 520, 1, 520, 520, 520, 520, 520, 521, 520, 520, + 522, 520, 522, 522, 522, 522, 522, 522, 522, 522, + 522, 522, 522, 522, 522, 523, 521, 520, 521, 520, + 520, 524, 524, 524, 520, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 524, 525, 524, 524, 524, 524, + 524, 524, 524, 523, 520, 30, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 520, 524, + 524, 524, 520, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 525, 85, 524, 524, 524, 524, + 524, 524, 524, 56, 56, 56, 56, 56, 56, 56, + + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 520, 524, 524, 524, 520, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 56, 56, 56, 56, 56, 520, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 520, 524, 524, 520, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 56, 56, 56, 56, 56, 56, 520, + 520, 520, 56, 56, 56, 56, 56, 56, 520, 56, + 56, 56, 520, 56, 56, 56, 520, 520, 56, 56, + + 520, 524, 524, 520, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 56, 56, 56, 56, 56, 520, + 520, 520, 520, 520, 56, 56, 56, 520, 520, 56, + 520, 56, 56, 56, 520, 56, 520, 56, 520, 520, + 520, 520, 56, 520, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 56, 56, 56, 56, 56, 520, + 520, 520, 520, 56, 56, 56, 520, 520, 56, 520, + 56, 520, 56, 520, 56, 520, 56, 520, 520, 520, + 520, 56, 524, 524, 524, 524, 520, 520, 56, 56, + 56, 520, 520, 520, 520, 56, 56, 520, 520, 520, + + 520, 56, 520, 520, 520, 520, 520, 520, 520, 520, + 56, 520, 520, 520, 520, 520, 524, 524, 520, 520, + 56, 520, 56, 520, 520, 520, 520, 56, 520, 520, + 520, 520, 56, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 524, 520, 520, 56, 520, + 56, 520, 520, 520, 520, 56, 520, 520, 520, 520, + 56, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 56, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + + 520, 520, 520, 56, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 56, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 0, + 520, 520, 520, 520, 520 } ; -static yyconst flex_int16_t yy_nxt[1722] = +static yyconst flex_int16_t yy_nxt[1786] = { 0, 4, 5, 6, 7, 8, 4, 7, 9, 4, 10, 11, 11, 11, 11, 11, 11, 11, 12, 7, 4, 13, 13, 14, 15, 16, 17, 13, 18, 19, 20, - 13, 13, 21, 13, 13, 13, 13, 22, 23, 24, - 13, 13, 13, 13, 13, 13, 4, 13, 13, 14, - 15, 16, 17, 13, 18, 19, 20, 13, 13, 21, - 13, 13, 13, 13, 22, 23, 24, 13, 13, 13, - 13, 13, 13, 31, 36, 32, 32, 32, 32, 32, - 32, 32, 33, 33, 33, 33, 33, 33, 33, 34, - 37, 39, 35, 41, 38, 42, 43, 44, 47, 49, - - 50, 36, 48, 90, 40, 91, 92, 30, 45, 93, - 30, 30, 97, 105, 46, 67, 34, 37, 39, 35, - 41, 38, 42, 43, 44, 47, 49, 50, 30, 48, - 90, 40, 91, 92, 513, 45, 93, 505, 504, 97, - 105, 46, 53, 53, 53, 53, 53, 53, 53, 30, - 501, 106, 53, 54, 55, 56, 53, 53, 53, 57, - 58, 53, 53, 53, 53, 59, 53, 60, 53, 61, - 62, 63, 64, 65, 53, 53, 53, 53, 106, 53, - 54, 55, 56, 53, 53, 53, 57, 58, 53, 53, - 53, 53, 59, 53, 60, 53, 61, 62, 63, 64, - - 65, 53, 53, 53, 53, 66, 66, 66, 66, 66, - 66, 66, 30, 107, 497, 30, 30, 496, 68, 68, - 68, 68, 68, 68, 68, 70, 70, 70, 70, 70, - 70, 70, 30, 492, 30, 30, 30, 30, 30, 30, - 107, 30, 30, 30, 30, 30, 483, 480, 127, 30, - 72, 73, 30, 30, 30, 30, 469, 128, 30, 31, - 74, 69, 69, 69, 69, 69, 69, 69, 71, 30, - 464, 463, 30, 30, 30, 127, 30, 72, 73, 129, - 130, 30, 75, 30, 128, 30, 131, 74, 30, 30, - 30, 30, 446, 30, 30, 71, 76, 30, 30, 440, - - 30, 30, 30, 30, 30, 433, 129, 130, 432, 75, - 133, 30, 134, 131, 78, 30, 79, 30, 30, 30, - 30, 30, 77, 76, 431, 135, 81, 30, 138, 80, - 428, 30, 30, 88, 30, 30, 82, 133, 381, 134, - 30, 78, 30, 79, 139, 89, 379, 30, 142, 77, - 30, 30, 135, 143, 378, 138, 80, 30, 30, 30, - 88, 30, 30, 82, 83, 30, 146, 94, 30, 30, - 147, 139, 89, 30, 30, 142, 84, 30, 30, 148, - 143, 95, 98, 374, 99, 136, 100, 96, 137, 30, - 371, 83, 85, 146, 94, 149, 168, 147, 86, 354, - - 30, 30, 353, 84, 30, 30, 148, 30, 95, 98, - 87, 99, 136, 100, 96, 137, 30, 30, 347, 85, - 30, 30, 149, 168, 335, 86, 101, 108, 108, 108, - 108, 108, 108, 108, 140, 102, 103, 87, 53, 53, - 53, 141, 104, 30, 53, 53, 316, 310, 169, 144, - 53, 113, 53, 101, 53, 53, 53, 53, 53, 30, - 172, 140, 102, 103, 145, 53, 53, 53, 141, 104, - 30, 53, 53, 30, 30, 169, 144, 53, 113, 53, - 173, 53, 53, 53, 53, 53, 30, 172, 300, 30, - 109, 145, 110, 110, 110, 110, 110, 110, 110, 112, - - 112, 112, 112, 112, 112, 112, 30, 173, 214, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 215, - 30, 30, 30, 30, 30, 298, 292, 117, 30, 30, - 289, 288, 30, 31, 282, 111, 111, 111, 111, 111, - 111, 111, 114, 115, 281, 177, 30, 178, 30, 30, - 30, 179, 116, 30, 30, 30, 302, 30, 30, 266, - 30, 30, 30, 180, 30, 30, 118, 303, 181, 114, - 115, 30, 177, 30, 178, 236, 30, 30, 179, 116, - 30, 119, 30, 30, 30, 30, 30, 120, 30, 231, - 180, 170, 182, 118, 30, 181, 30, 30, 30, 171, - - 223, 222, 30, 30, 191, 30, 30, 184, 119, 187, - 122, 183, 132, 123, 120, 30, 121, 52, 170, 182, - 27, 27, 30, 52, 30, 30, 171, 30, 30, 30, - 30, 30, 29, 28, 184, 27, 30, 122, 30, 125, - 123, 30, 30, 121, 30, 124, 514, 126, 150, 150, - 150, 150, 150, 150, 150, 153, 153, 153, 153, 153, - 153, 153, 154, 25, 185, 186, 125, 30, 188, 30, - 189, 514, 124, 30, 126, 30, 30, 30, 30, 30, - 30, 151, 151, 151, 151, 151, 151, 151, 514, 154, - 30, 185, 186, 30, 30, 188, 30, 189, 30, 30, - - 30, 30, 30, 514, 514, 30, 156, 30, 30, 30, - 30, 30, 155, 514, 158, 30, 157, 30, 30, 514, - 514, 30, 109, 190, 152, 152, 152, 152, 152, 152, - 152, 162, 30, 156, 514, 165, 194, 514, 30, 155, - 159, 158, 30, 157, 514, 30, 30, 30, 209, 30, - 190, 30, 514, 30, 30, 30, 30, 30, 162, 210, - 30, 30, 165, 194, 30, 30, 192, 111, 111, 111, - 111, 111, 111, 111, 160, 209, 514, 211, 161, 30, - 163, 514, 30, 30, 30, 30, 210, 30, 30, 30, - 30, 30, 212, 30, 30, 30, 193, 30, 30, 174, - - 514, 160, 514, 30, 211, 161, 213, 163, 175, 514, - 176, 216, 217, 218, 167, 164, 219, 220, 221, 212, - 166, 30, 514, 193, 514, 514, 174, 30, 30, 30, - 224, 30, 109, 213, 514, 175, 30, 176, 216, 217, - 218, 167, 164, 219, 220, 221, 514, 166, 195, 195, - 195, 195, 195, 195, 195, 30, 514, 224, 30, 196, - 514, 197, 197, 197, 197, 197, 197, 197, 514, 514, - 30, 198, 198, 198, 198, 198, 198, 198, 30, 225, - 30, 30, 30, 30, 30, 30, 226, 30, 30, 30, - 30, 30, 30, 514, 227, 30, 30, 30, 30, 228, - - 30, 30, 30, 30, 30, 30, 225, 201, 30, 30, - 202, 229, 199, 226, 30, 514, 514, 30, 30, 514, - 30, 227, 30, 514, 203, 230, 228, 30, 514, 30, - 514, 514, 30, 514, 200, 30, 30, 232, 229, 199, - 30, 30, 30, 204, 30, 30, 30, 30, 205, 30, - 30, 203, 230, 235, 237, 30, 30, 30, 30, 30, - 30, 30, 233, 30, 232, 234, 30, 30, 514, 207, - 204, 244, 514, 30, 30, 205, 30, 30, 514, 206, - 235, 237, 242, 30, 514, 243, 514, 249, 30, 233, - 208, 30, 234, 514, 30, 30, 207, 30, 514, 30, - - 30, 245, 514, 30, 30, 30, 206, 238, 238, 238, - 238, 238, 238, 238, 249, 30, 30, 208, 30, 30, - 30, 30, 30, 514, 239, 239, 239, 239, 239, 239, - 239, 514, 250, 30, 30, 241, 246, 30, 30, 251, - 30, 514, 30, 30, 30, 30, 514, 30, 30, 30, - 30, 30, 30, 252, 253, 30, 30, 254, 30, 250, - 30, 30, 241, 246, 30, 196, 251, 240, 240, 240, - 240, 240, 240, 240, 247, 255, 30, 256, 257, 258, - 252, 253, 30, 259, 254, 260, 248, 30, 261, 30, - 262, 263, 264, 265, 30, 267, 268, 269, 270, 271, - - 272, 247, 255, 30, 256, 257, 258, 273, 274, 275, - 259, 276, 260, 248, 514, 261, 514, 262, 263, 264, - 265, 514, 267, 268, 269, 270, 271, 272, 30, 514, - 514, 30, 196, 514, 273, 274, 275, 30, 276, 30, - 30, 30, 30, 30, 514, 277, 277, 277, 277, 277, - 277, 277, 30, 283, 514, 30, 30, 278, 30, 514, - 279, 30, 30, 30, 514, 284, 30, 30, 280, 30, - 30, 30, 30, 30, 30, 30, 285, 286, 514, 30, - 283, 30, 30, 287, 278, 30, 30, 30, 290, 291, - 30, 30, 284, 293, 30, 296, 297, 514, 294, 299, - - 30, 301, 514, 285, 286, 30, 295, 304, 305, 306, - 287, 30, 307, 30, 308, 290, 291, 309, 514, 514, - 293, 514, 296, 297, 30, 294, 299, 30, 301, 30, - 30, 30, 313, 295, 304, 305, 306, 314, 315, 307, - 317, 308, 514, 30, 309, 30, 30, 30, 30, 30, - 318, 311, 311, 311, 311, 311, 311, 311, 30, 313, - 514, 30, 30, 319, 314, 315, 320, 317, 321, 30, - 322, 323, 312, 514, 324, 325, 326, 318, 327, 328, - 329, 330, 331, 332, 333, 30, 334, 30, 336, 337, - 319, 338, 339, 320, 514, 321, 341, 322, 323, 312, - - 30, 324, 325, 326, 342, 327, 328, 329, 330, 331, - 332, 333, 343, 334, 344, 336, 337, 30, 338, 339, - 30, 30, 30, 341, 345, 30, 30, 346, 348, 349, - 514, 342, 514, 350, 351, 352, 355, 514, 356, 343, - 357, 344, 358, 359, 360, 361, 362, 363, 366, 367, - 364, 345, 368, 369, 346, 348, 349, 340, 365, 30, - 350, 351, 352, 355, 30, 356, 370, 357, 372, 358, - 359, 360, 361, 362, 363, 366, 367, 364, 30, 368, - 369, 30, 30, 373, 340, 365, 375, 376, 377, 380, - 382, 383, 384, 370, 385, 372, 386, 387, 388, 389, - - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 373, 400, 401, 375, 376, 377, 380, 382, 383, 384, - 30, 385, 402, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 403, 400, 401, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 402, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 403, 427, 429, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 430, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 434, 427, 429, 435, 436, 437, 438, 439, 441, - - 442, 443, 444, 430, 445, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 434, 460, - 461, 435, 436, 437, 438, 439, 441, 442, 443, 444, - 462, 445, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 465, 460, 461, 466, 467, - 468, 470, 471, 472, 473, 474, 475, 462, 476, 477, - 478, 479, 481, 482, 484, 485, 486, 487, 488, 489, - 490, 491, 465, 493, 494, 466, 467, 468, 470, 471, - 472, 473, 474, 475, 495, 476, 477, 478, 479, 481, - 482, 484, 485, 486, 487, 488, 489, 490, 491, 498, - - 493, 494, 499, 500, 502, 503, 506, 507, 508, 509, - 510, 495, 511, 512, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 498, 514, 514, 499, - 500, 502, 503, 506, 507, 508, 509, 510, 514, 511, - 512, 26, 514, 26, 51, 51, 51, 3, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514 + 13, 21, 22, 13, 13, 13, 13, 23, 24, 25, + 13, 13, 13, 13, 13, 13, 4, 4, 13, 13, + 14, 15, 16, 17, 13, 18, 19, 20, 13, 21, + 22, 13, 13, 13, 13, 23, 24, 25, 13, 13, + 13, 13, 13, 13, 28, 33, 38, 34, 34, 34, + 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, + 35, 36, 39, 41, 37, 43, 40, 44, 45, 50, + + 47, 52, 53, 51, 38, 28, 42, 96, 97, 98, + 99, 48, 103, 111, 112, 113, 29, 49, 133, 36, + 39, 41, 37, 43, 40, 44, 45, 50, 47, 52, + 53, 51, 70, 220, 42, 96, 97, 98, 99, 48, + 103, 111, 112, 113, 221, 49, 133, 29, 56, 56, + 56, 56, 56, 56, 56, 32, 134, 135, 56, 57, + 58, 59, 56, 56, 56, 60, 61, 56, 56, 56, + 56, 62, 56, 63, 56, 64, 65, 66, 67, 68, + 56, 56, 56, 56, 134, 135, 56, 57, 58, 59, + 56, 56, 56, 60, 61, 56, 56, 56, 56, 62, + + 56, 63, 56, 64, 65, 66, 67, 68, 56, 56, + 56, 56, 69, 69, 69, 69, 69, 69, 69, 32, + 519, 32, 32, 32, 32, 32, 511, 71, 71, 71, + 71, 71, 71, 71, 32, 510, 507, 32, 33, 503, + 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, + 73, 73, 73, 73, 32, 502, 32, 32, 32, 32, + 32, 498, 32, 32, 32, 308, 32, 32, 136, 32, + 94, 489, 32, 32, 75, 32, 309, 32, 32, 32, + 76, 32, 95, 74, 32, 32, 32, 137, 77, 32, + 32, 32, 139, 82, 32, 32, 136, 32, 94, 32, + + 486, 32, 75, 475, 32, 32, 32, 470, 76, 140, + 95, 74, 32, 79, 78, 137, 77, 141, 32, 32, + 139, 82, 32, 32, 32, 81, 469, 32, 80, 32, + 32, 32, 32, 144, 32, 32, 32, 140, 87, 452, + 446, 79, 78, 439, 32, 141, 32, 438, 83, 32, + 32, 437, 434, 81, 32, 387, 80, 32, 32, 385, + 145, 144, 32, 32, 384, 88, 32, 32, 32, 380, + 32, 32, 32, 148, 377, 32, 83, 27, 27, 27, + 27, 84, 27, 27, 85, 85, 27, 89, 145, 32, + 360, 359, 90, 88, 27, 27, 27, 32, 100, 149, + + 32, 148, 91, 32, 32, 32, 32, 146, 32, 32, + 353, 32, 101, 341, 147, 89, 152, 104, 102, 105, + 90, 106, 107, 29, 85, 32, 100, 149, 32, 32, + 91, 108, 109, 92, 142, 146, 153, 143, 110, 154, + 101, 93, 147, 32, 152, 104, 102, 105, 32, 106, + 107, 114, 114, 114, 114, 114, 114, 114, 322, 108, + 109, 92, 142, 316, 153, 143, 110, 154, 32, 93, + 56, 56, 56, 155, 174, 306, 56, 56, 304, 298, + 175, 178, 56, 179, 56, 183, 56, 56, 56, 56, + 56, 118, 118, 118, 118, 118, 118, 118, 56, 56, + + 56, 155, 174, 32, 56, 56, 32, 32, 175, 178, + 56, 179, 56, 183, 56, 56, 56, 56, 56, 32, + 295, 294, 32, 115, 288, 116, 116, 116, 116, 116, + 116, 116, 32, 287, 272, 32, 33, 119, 117, 117, + 117, 117, 117, 117, 117, 32, 32, 32, 32, 32, + 32, 32, 32, 242, 237, 32, 32, 32, 184, 185, + 32, 32, 32, 32, 186, 119, 32, 32, 187, 32, + 123, 229, 32, 32, 228, 32, 197, 193, 189, 138, + 32, 120, 121, 32, 32, 188, 184, 185, 32, 124, + 32, 122, 186, 55, 32, 32, 187, 32, 32, 32, + + 32, 32, 32, 32, 32, 32, 32, 125, 520, 120, + 121, 55, 32, 188, 46, 190, 31, 124, 32, 122, + 126, 32, 32, 32, 30, 520, 32, 26, 32, 32, + 32, 32, 32, 520, 520, 125, 32, 32, 520, 32, + 32, 520, 32, 190, 32, 520, 128, 129, 126, 27, + 27, 27, 27, 84, 27, 27, 85, 85, 27, 520, + 32, 32, 127, 32, 32, 191, 27, 27, 27, 32, + 520, 32, 150, 131, 128, 129, 176, 180, 32, 32, + 130, 32, 32, 192, 177, 194, 181, 151, 182, 195, + 127, 196, 200, 191, 198, 29, 85, 215, 132, 520, + + 150, 131, 520, 32, 176, 180, 32, 216, 130, 32, + 32, 192, 177, 194, 181, 151, 182, 195, 520, 196, + 200, 32, 520, 520, 199, 215, 132, 156, 156, 156, + 156, 156, 156, 156, 32, 216, 520, 32, 32, 520, + 157, 157, 157, 157, 157, 157, 157, 32, 217, 32, + 32, 115, 199, 158, 158, 158, 158, 158, 158, 158, + 32, 520, 520, 32, 32, 520, 117, 117, 117, 117, + 117, 117, 117, 520, 218, 520, 217, 32, 159, 159, + 159, 159, 159, 159, 159, 32, 520, 520, 32, 32, + 32, 32, 219, 32, 32, 32, 32, 32, 520, 222, + + 520, 32, 218, 32, 32, 32, 520, 32, 520, 160, + 32, 32, 32, 161, 32, 32, 32, 32, 32, 223, + 219, 163, 520, 164, 224, 225, 162, 222, 32, 32, + 520, 520, 32, 32, 32, 166, 32, 160, 168, 520, + 226, 161, 32, 520, 32, 32, 32, 223, 520, 163, + 165, 164, 224, 225, 162, 32, 32, 32, 32, 32, + 32, 32, 32, 166, 520, 167, 168, 32, 226, 169, + 32, 32, 32, 520, 32, 520, 32, 32, 32, 32, + 115, 520, 520, 32, 227, 32, 32, 32, 171, 520, + 230, 520, 170, 167, 173, 231, 232, 169, 520, 32, + + 520, 32, 172, 201, 201, 201, 201, 201, 201, 201, + 32, 32, 227, 520, 32, 32, 171, 32, 230, 32, + 170, 520, 173, 231, 232, 32, 32, 520, 32, 202, + 172, 203, 203, 203, 203, 203, 203, 203, 204, 204, + 204, 204, 204, 204, 204, 205, 32, 520, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 520, 520, 32, 520, 207, 32, 32, 208, 32, 520, + 520, 32, 520, 205, 32, 32, 520, 32, 520, 32, + 32, 32, 32, 32, 32, 233, 520, 32, 32, 32, + 209, 32, 520, 234, 520, 211, 206, 32, 32, 32, + + 32, 32, 32, 32, 32, 32, 210, 32, 32, 520, + 235, 236, 520, 233, 32, 238, 241, 212, 209, 520, + 32, 234, 32, 211, 243, 213, 239, 32, 32, 240, + 520, 32, 32, 520, 210, 520, 250, 214, 235, 236, + 32, 520, 32, 238, 241, 212, 520, 32, 520, 520, + 520, 520, 243, 213, 239, 520, 255, 240, 244, 244, + 244, 244, 244, 244, 244, 214, 32, 520, 520, 32, + 32, 32, 245, 245, 245, 245, 245, 245, 245, 32, + 256, 520, 32, 202, 255, 246, 246, 246, 246, 246, + 246, 246, 32, 520, 32, 32, 32, 32, 32, 520, + + 520, 32, 520, 248, 32, 32, 249, 520, 256, 32, + 32, 251, 520, 32, 32, 257, 32, 258, 259, 32, + 32, 32, 32, 260, 32, 32, 261, 247, 32, 262, + 252, 32, 32, 263, 264, 32, 32, 32, 32, 32, + 32, 32, 32, 257, 32, 258, 259, 265, 266, 267, + 253, 260, 268, 32, 261, 247, 269, 262, 252, 32, + 270, 263, 264, 271, 32, 273, 274, 275, 276, 277, + 278, 32, 254, 279, 280, 265, 266, 267, 253, 32, + 268, 32, 281, 282, 269, 520, 32, 520, 270, 32, + 202, 271, 520, 273, 274, 275, 276, 277, 278, 520, + + 254, 279, 280, 32, 520, 289, 32, 32, 520, 32, + 281, 282, 32, 32, 520, 283, 283, 283, 283, 283, + 283, 283, 32, 284, 32, 32, 32, 32, 32, 32, + 285, 290, 32, 289, 286, 32, 32, 32, 291, 32, + 32, 32, 32, 32, 32, 292, 32, 32, 32, 293, + 32, 284, 32, 32, 32, 296, 297, 299, 302, 290, + 300, 303, 305, 307, 310, 32, 291, 32, 301, 311, + 312, 313, 314, 292, 315, 32, 520, 293, 319, 520, + 32, 520, 32, 296, 297, 299, 302, 32, 300, 303, + 305, 307, 310, 32, 320, 321, 301, 311, 312, 313, + + 314, 32, 315, 323, 32, 32, 319, 317, 317, 317, + 317, 317, 317, 317, 32, 520, 32, 32, 32, 32, + 32, 32, 320, 321, 32, 32, 324, 325, 326, 520, + 327, 323, 328, 329, 330, 331, 520, 332, 333, 334, + 335, 336, 337, 318, 32, 338, 339, 340, 342, 343, + 344, 345, 520, 347, 324, 325, 326, 32, 327, 32, + 328, 329, 330, 331, 32, 332, 333, 334, 335, 336, + 337, 318, 348, 338, 339, 340, 342, 343, 344, 345, + 32, 347, 32, 32, 32, 32, 32, 349, 350, 520, + 351, 352, 354, 355, 356, 520, 357, 520, 358, 361, + + 348, 362, 363, 364, 365, 366, 367, 368, 369, 372, + 32, 373, 374, 32, 32, 349, 350, 346, 351, 352, + 354, 355, 356, 32, 357, 32, 358, 361, 375, 362, + 363, 364, 365, 366, 367, 368, 369, 372, 370, 373, + 374, 376, 378, 379, 381, 346, 371, 382, 383, 386, + 388, 389, 390, 32, 391, 392, 375, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 370, 402, 403, 376, + 378, 379, 381, 404, 371, 382, 383, 386, 388, 389, + 390, 405, 391, 392, 406, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 407, 402, 403, 408, 409, 410, + + 411, 404, 412, 413, 414, 415, 416, 417, 418, 405, + 419, 420, 406, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 407, 430, 431, 408, 409, 410, 411, 432, + 412, 413, 414, 415, 416, 417, 418, 433, 419, 420, + 435, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 436, 430, 431, 440, 441, 442, 443, 432, 444, 445, + 447, 448, 449, 450, 451, 433, 453, 454, 435, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 436, 464, + 465, 440, 441, 442, 443, 466, 444, 445, 447, 448, + 449, 450, 451, 467, 453, 454, 468, 455, 456, 457, + + 458, 459, 460, 461, 462, 463, 471, 464, 465, 472, + 473, 474, 476, 466, 477, 478, 479, 480, 481, 482, + 483, 467, 484, 485, 468, 487, 488, 490, 491, 492, + 493, 494, 495, 496, 471, 497, 499, 472, 473, 474, + 476, 500, 477, 478, 479, 480, 481, 482, 483, 501, + 484, 485, 504, 487, 488, 490, 491, 492, 493, 494, + 495, 496, 505, 497, 499, 506, 508, 509, 512, 500, + 513, 514, 515, 516, 517, 518, 520, 501, 520, 520, + 504, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 505, 520, 520, 506, 508, 509, 512, 520, 513, 514, + + 515, 516, 517, 518, 27, 27, 54, 54, 86, 86, + 3, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520 } ; -static yyconst flex_int16_t yy_chk[1722] = +static yyconst flex_int16_t yy_chk[1786] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -888,189 +896,195 @@ static yyconst flex_int16_t yy_chk[1722] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 11, 15, 11, 11, 11, 11, 11, - 11, 11, 12, 12, 12, 12, 12, 12, 12, 14, - 16, 17, 14, 18, 16, 19, 20, 21, 22, 23, - - 24, 15, 22, 55, 17, 56, 57, 30, 21, 58, - 30, 30, 60, 63, 21, 518, 14, 16, 17, 14, - 18, 16, 19, 20, 21, 22, 23, 24, 516, 22, - 55, 17, 56, 57, 511, 21, 58, 500, 499, 60, - 63, 21, 28, 28, 28, 28, 28, 28, 28, 30, - 494, 64, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 64, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - - 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, - 29, 29, 31, 65, 489, 31, 31, 488, 31, 31, - 31, 31, 31, 31, 31, 33, 33, 33, 33, 33, - 33, 33, 35, 484, 36, 35, 35, 36, 36, 34, - 65, 37, 34, 34, 37, 37, 473, 470, 88, 38, - 35, 36, 38, 38, 31, 32, 455, 89, 32, 32, - 37, 32, 32, 32, 32, 32, 32, 32, 34, 39, - 449, 448, 39, 39, 35, 88, 36, 35, 36, 90, - 91, 34, 38, 37, 89, 40, 92, 37, 40, 40, - 41, 38, 426, 41, 41, 34, 39, 32, 42, 420, - - 43, 42, 42, 43, 43, 411, 90, 91, 410, 38, - 94, 39, 95, 92, 41, 44, 42, 45, 44, 44, - 45, 45, 40, 39, 409, 96, 44, 40, 98, 43, - 406, 46, 41, 54, 46, 46, 45, 94, 355, 95, - 42, 41, 43, 42, 99, 54, 351, 47, 101, 40, - 47, 47, 96, 102, 350, 98, 43, 44, 48, 45, - 54, 48, 48, 45, 46, 49, 104, 59, 49, 49, - 105, 99, 54, 46, 50, 101, 47, 50, 50, 106, - 102, 59, 61, 346, 61, 97, 61, 59, 97, 47, - 343, 46, 48, 104, 59, 107, 127, 105, 49, 326, - - 48, 67, 325, 47, 67, 67, 106, 49, 59, 61, - 50, 61, 97, 61, 59, 97, 50, 71, 319, 48, - 71, 71, 107, 127, 305, 49, 62, 66, 66, 66, - 66, 66, 66, 66, 100, 62, 62, 50, 53, 53, - 53, 100, 62, 67, 53, 53, 284, 276, 128, 103, - 53, 71, 53, 62, 53, 53, 53, 53, 53, 71, - 130, 100, 62, 62, 103, 53, 53, 53, 100, 62, - 72, 53, 53, 72, 72, 128, 103, 53, 71, 53, - 131, 53, 53, 53, 53, 53, 68, 130, 267, 68, - 68, 103, 68, 68, 68, 68, 68, 68, 68, 70, - - 70, 70, 70, 70, 70, 70, 73, 131, 173, 73, - 73, 74, 72, 75, 74, 74, 75, 75, 76, 173, - 77, 76, 76, 77, 77, 265, 260, 77, 68, 69, - 257, 256, 69, 69, 250, 69, 69, 69, 69, 69, - 69, 69, 73, 75, 249, 133, 78, 134, 73, 78, - 78, 135, 76, 74, 79, 75, 269, 79, 79, 227, - 76, 80, 77, 136, 80, 80, 78, 269, 137, 73, - 75, 69, 133, 81, 134, 193, 81, 81, 135, 76, - 82, 79, 83, 82, 82, 83, 83, 80, 78, 189, - 136, 129, 138, 78, 84, 137, 79, 84, 84, 129, - - 181, 180, 86, 80, 147, 86, 86, 140, 79, 143, - 83, 139, 93, 84, 80, 81, 82, 51, 129, 138, - 27, 26, 82, 25, 83, 85, 129, 87, 85, 85, - 87, 87, 10, 9, 140, 8, 84, 83, 113, 86, - 84, 113, 113, 82, 86, 85, 3, 87, 108, 108, - 108, 108, 108, 108, 108, 112, 112, 112, 112, 112, - 112, 112, 113, 2, 141, 142, 86, 85, 144, 87, - 145, 0, 85, 115, 87, 109, 115, 115, 109, 109, - 113, 109, 109, 109, 109, 109, 109, 109, 0, 113, - 114, 141, 142, 114, 114, 144, 116, 145, 117, 116, - - 116, 117, 117, 0, 0, 123, 115, 120, 123, 123, - 120, 120, 114, 0, 117, 115, 116, 109, 110, 0, - 0, 110, 110, 146, 110, 110, 110, 110, 110, 110, - 110, 120, 114, 115, 0, 123, 149, 0, 116, 114, - 117, 117, 119, 116, 0, 119, 119, 123, 168, 120, - 146, 118, 0, 121, 118, 118, 121, 121, 120, 169, - 110, 111, 123, 149, 111, 111, 148, 111, 111, 111, - 111, 111, 111, 111, 118, 168, 0, 170, 119, 122, - 121, 0, 122, 122, 119, 124, 169, 126, 124, 124, - 126, 126, 171, 118, 125, 121, 148, 125, 125, 132, - - 0, 118, 0, 111, 170, 119, 172, 121, 132, 0, - 132, 174, 175, 176, 125, 122, 177, 178, 179, 171, - 124, 122, 0, 148, 0, 0, 132, 124, 152, 126, - 182, 152, 152, 172, 0, 132, 125, 132, 174, 175, - 176, 125, 122, 177, 178, 179, 0, 124, 150, 150, - 150, 150, 150, 150, 150, 151, 0, 182, 151, 151, - 0, 151, 151, 151, 151, 151, 151, 151, 0, 0, - 152, 153, 153, 153, 153, 153, 153, 153, 154, 183, - 155, 154, 154, 155, 155, 156, 184, 157, 156, 156, - 157, 157, 158, 0, 185, 158, 158, 151, 159, 186, - - 160, 159, 159, 160, 160, 161, 183, 159, 161, 161, - 159, 187, 154, 184, 162, 0, 0, 162, 162, 0, - 154, 185, 155, 0, 161, 188, 186, 156, 0, 157, - 0, 0, 163, 0, 158, 163, 163, 190, 187, 154, - 159, 165, 160, 162, 165, 165, 164, 161, 163, 164, - 164, 161, 188, 192, 194, 166, 162, 167, 166, 166, - 167, 167, 191, 201, 190, 191, 201, 201, 0, 165, - 162, 201, 0, 200, 163, 163, 200, 200, 0, 164, - 192, 194, 200, 165, 0, 200, 0, 209, 164, 191, - 167, 202, 191, 0, 202, 202, 165, 166, 0, 167, - - 199, 202, 0, 199, 199, 201, 164, 195, 195, 195, - 195, 195, 195, 195, 209, 200, 203, 167, 196, 203, - 203, 196, 196, 0, 196, 196, 196, 196, 196, 196, - 196, 0, 210, 202, 205, 199, 203, 205, 205, 211, - 204, 0, 199, 204, 204, 206, 0, 207, 206, 206, - 207, 207, 208, 212, 213, 208, 208, 214, 203, 210, - 196, 197, 199, 203, 197, 197, 211, 197, 197, 197, - 197, 197, 197, 197, 204, 216, 205, 217, 218, 219, - 212, 213, 204, 220, 214, 221, 208, 206, 222, 207, - 223, 224, 225, 226, 208, 228, 229, 230, 231, 232, - - 233, 204, 216, 197, 217, 218, 219, 234, 235, 236, - 220, 237, 221, 208, 0, 222, 0, 223, 224, 225, - 226, 0, 228, 229, 230, 231, 232, 233, 240, 0, - 0, 240, 240, 0, 234, 235, 236, 241, 237, 239, - 241, 241, 239, 239, 0, 239, 239, 239, 239, 239, - 239, 239, 242, 251, 0, 242, 242, 241, 243, 0, - 242, 243, 243, 244, 0, 252, 244, 244, 243, 245, - 240, 246, 245, 245, 246, 246, 253, 254, 0, 241, - 251, 239, 247, 255, 241, 247, 247, 248, 258, 259, - 248, 248, 252, 261, 242, 263, 264, 0, 262, 266, - - 243, 268, 0, 253, 254, 244, 262, 270, 271, 272, - 255, 245, 273, 246, 274, 258, 259, 275, 0, 0, - 261, 0, 263, 264, 247, 262, 266, 279, 268, 248, - 279, 279, 281, 262, 270, 271, 272, 282, 283, 273, - 285, 274, 0, 278, 275, 277, 278, 278, 277, 277, - 286, 277, 277, 277, 277, 277, 277, 277, 280, 281, - 0, 280, 280, 287, 282, 283, 288, 285, 289, 279, - 290, 292, 278, 0, 293, 294, 295, 286, 296, 297, - 298, 299, 301, 302, 302, 278, 304, 277, 306, 307, - 287, 309, 310, 288, 0, 289, 313, 290, 292, 278, - - 280, 293, 294, 295, 314, 296, 297, 298, 299, 301, - 302, 302, 315, 304, 316, 306, 307, 311, 309, 310, - 311, 311, 312, 313, 317, 312, 312, 318, 320, 321, - 0, 314, 0, 322, 323, 324, 327, 0, 328, 315, - 329, 316, 330, 331, 332, 333, 334, 335, 337, 338, - 336, 317, 339, 341, 318, 320, 321, 312, 336, 311, - 322, 323, 324, 327, 312, 328, 342, 329, 344, 330, - 331, 332, 333, 334, 335, 337, 338, 336, 340, 339, - 341, 340, 340, 345, 312, 336, 347, 348, 349, 352, - 356, 357, 358, 342, 359, 344, 360, 361, 362, 363, - - 364, 365, 366, 368, 369, 370, 371, 372, 373, 374, - 345, 375, 376, 347, 348, 349, 352, 356, 357, 358, - 340, 359, 377, 360, 361, 362, 363, 364, 365, 366, - 368, 369, 370, 371, 372, 373, 374, 379, 375, 376, - 380, 381, 382, 383, 384, 385, 386, 387, 389, 377, - 390, 391, 392, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 379, 405, 407, 380, 381, 382, - 383, 384, 385, 386, 387, 389, 408, 390, 391, 392, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 413, 405, 407, 414, 416, 417, 418, 419, 421, - - 422, 423, 424, 408, 425, 427, 429, 430, 432, 433, - 434, 436, 437, 438, 439, 441, 442, 443, 413, 444, - 445, 414, 416, 417, 418, 419, 421, 422, 423, 424, - 447, 425, 427, 429, 430, 432, 433, 434, 436, 437, - 438, 439, 441, 442, 443, 450, 444, 445, 451, 453, - 454, 456, 457, 458, 459, 460, 461, 447, 462, 463, - 465, 466, 471, 472, 474, 475, 476, 477, 478, 479, - 481, 482, 450, 485, 486, 451, 453, 454, 456, 457, - 458, 459, 460, 461, 487, 462, 463, 465, 466, 471, - 472, 474, 475, 476, 477, 478, 479, 481, 482, 490, - - 485, 486, 491, 493, 495, 498, 501, 502, 506, 507, - 508, 487, 509, 510, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 490, 0, 0, 491, - 493, 495, 498, 501, 502, 506, 507, 508, 0, 509, - 510, 515, 0, 515, 517, 517, 517, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514 + 1, 1, 1, 1, 8, 11, 15, 11, 11, 11, + 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, + 12, 14, 16, 17, 14, 18, 16, 19, 20, 23, + + 22, 24, 25, 23, 15, 27, 17, 58, 59, 60, + 61, 22, 63, 66, 67, 68, 8, 22, 94, 14, + 16, 17, 14, 18, 16, 19, 20, 23, 22, 24, + 25, 23, 524, 179, 17, 58, 59, 60, 61, 22, + 63, 66, 67, 68, 179, 22, 94, 27, 30, 30, + 30, 30, 30, 30, 30, 522, 95, 96, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 95, 96, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 31, 31, 31, 31, 31, 31, 31, 32, + 517, 33, 32, 32, 33, 33, 506, 33, 33, 33, + 33, 33, 33, 33, 34, 505, 500, 34, 34, 495, + 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, + 35, 35, 35, 35, 36, 494, 37, 36, 36, 37, + 37, 490, 32, 38, 33, 275, 38, 38, 97, 39, + 57, 479, 39, 39, 37, 44, 275, 34, 44, 44, + 38, 40, 57, 36, 40, 40, 41, 98, 39, 41, + 41, 42, 100, 44, 42, 42, 97, 36, 57, 37, + + 476, 43, 37, 461, 43, 43, 38, 455, 38, 101, + 57, 36, 39, 41, 40, 98, 39, 102, 44, 45, + 100, 44, 45, 45, 40, 43, 454, 47, 42, 41, + 47, 47, 70, 104, 42, 70, 70, 101, 47, 432, + 426, 41, 40, 417, 43, 102, 48, 416, 45, 48, + 48, 415, 412, 43, 49, 361, 42, 49, 49, 357, + 105, 104, 45, 50, 356, 48, 50, 50, 51, 352, + 47, 51, 51, 107, 349, 70, 45, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 49, 105, 48, + 332, 331, 50, 48, 46, 46, 46, 49, 62, 108, + + 52, 107, 51, 52, 52, 53, 50, 106, 53, 53, + 325, 51, 62, 311, 106, 49, 110, 64, 62, 64, + 50, 64, 65, 46, 46, 75, 62, 108, 75, 75, + 51, 65, 65, 52, 103, 106, 111, 103, 65, 112, + 62, 53, 106, 52, 110, 64, 62, 64, 53, 64, + 65, 69, 69, 69, 69, 69, 69, 69, 290, 65, + 65, 52, 103, 282, 111, 103, 65, 112, 75, 53, + 56, 56, 56, 113, 133, 273, 56, 56, 271, 266, + 134, 136, 56, 137, 56, 139, 56, 56, 56, 56, + 56, 73, 73, 73, 73, 73, 73, 73, 56, 56, + + 56, 113, 133, 74, 56, 56, 74, 74, 134, 136, + 56, 137, 56, 139, 56, 56, 56, 56, 56, 71, + 263, 262, 71, 71, 256, 71, 71, 71, 71, 71, + 71, 71, 72, 255, 233, 72, 72, 74, 72, 72, + 72, 72, 72, 72, 72, 76, 74, 77, 76, 76, + 77, 77, 78, 199, 195, 78, 78, 79, 140, 141, + 79, 79, 71, 80, 142, 74, 80, 80, 143, 81, + 80, 187, 81, 81, 186, 72, 153, 149, 145, 99, + 82, 76, 78, 82, 82, 144, 140, 141, 76, 81, + 77, 79, 142, 54, 83, 78, 143, 83, 83, 84, + + 79, 87, 84, 84, 87, 87, 80, 82, 29, 76, + 78, 26, 81, 144, 21, 146, 10, 81, 89, 79, + 83, 89, 89, 82, 9, 3, 88, 2, 90, 88, + 88, 90, 90, 0, 0, 82, 92, 83, 0, 92, + 92, 0, 84, 146, 87, 0, 89, 90, 83, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 0, + 91, 89, 88, 91, 91, 147, 85, 85, 85, 88, + 0, 90, 109, 92, 89, 90, 135, 138, 93, 92, + 91, 93, 93, 148, 135, 150, 138, 109, 138, 151, + 88, 152, 155, 147, 154, 85, 85, 174, 93, 0, + + 109, 92, 0, 91, 135, 138, 132, 175, 91, 132, + 132, 148, 135, 150, 138, 109, 138, 151, 0, 152, + 155, 93, 0, 0, 154, 174, 93, 114, 114, 114, + 114, 114, 114, 114, 115, 175, 0, 115, 115, 0, + 115, 115, 115, 115, 115, 115, 115, 116, 176, 132, + 116, 116, 154, 116, 116, 116, 116, 116, 116, 116, + 117, 0, 0, 117, 117, 0, 117, 117, 117, 117, + 117, 117, 117, 0, 177, 0, 176, 115, 118, 118, + 118, 118, 118, 118, 118, 119, 0, 0, 119, 119, + 116, 120, 178, 121, 120, 120, 121, 121, 0, 180, + + 0, 122, 177, 117, 122, 122, 0, 123, 0, 119, + 123, 123, 124, 120, 126, 124, 124, 126, 126, 181, + 178, 122, 0, 123, 182, 183, 121, 180, 119, 125, + 0, 0, 125, 125, 120, 124, 121, 119, 126, 0, + 184, 120, 127, 0, 122, 127, 127, 181, 0, 122, + 123, 123, 182, 183, 121, 124, 128, 126, 129, 128, + 128, 129, 129, 124, 0, 125, 126, 130, 184, 127, + 130, 130, 125, 0, 131, 0, 158, 131, 131, 158, + 158, 0, 0, 161, 185, 127, 161, 161, 129, 0, + 188, 0, 128, 125, 131, 189, 190, 127, 0, 128, + + 0, 129, 130, 156, 156, 156, 156, 156, 156, 156, + 130, 160, 185, 0, 160, 160, 129, 131, 188, 158, + 128, 0, 131, 189, 190, 157, 161, 0, 157, 157, + 130, 157, 157, 157, 157, 157, 157, 157, 159, 159, + 159, 159, 159, 159, 159, 160, 162, 0, 163, 162, + 162, 163, 163, 164, 160, 165, 164, 164, 165, 165, + 0, 0, 166, 0, 165, 166, 166, 165, 157, 0, + 0, 167, 0, 160, 167, 167, 0, 168, 0, 169, + 168, 168, 169, 169, 170, 191, 0, 170, 170, 162, + 167, 163, 0, 192, 0, 169, 164, 171, 165, 172, + + 171, 171, 172, 172, 173, 166, 168, 173, 173, 0, + 193, 194, 0, 191, 167, 196, 198, 170, 167, 0, + 168, 192, 169, 169, 200, 171, 197, 170, 207, 197, + 0, 207, 207, 0, 168, 0, 207, 173, 193, 194, + 171, 0, 172, 196, 198, 170, 0, 173, 0, 0, + 0, 0, 200, 171, 197, 0, 215, 197, 201, 201, + 201, 201, 201, 201, 201, 173, 202, 0, 0, 202, + 202, 207, 202, 202, 202, 202, 202, 202, 202, 203, + 216, 0, 203, 203, 215, 203, 203, 203, 203, 203, + 203, 203, 205, 0, 206, 205, 205, 206, 206, 0, + + 0, 208, 0, 206, 208, 208, 206, 0, 216, 202, + 209, 208, 0, 209, 209, 217, 210, 218, 219, 210, + 210, 211, 203, 220, 211, 211, 222, 205, 212, 223, + 209, 212, 212, 224, 225, 205, 213, 206, 214, 213, + 213, 214, 214, 217, 208, 218, 219, 226, 227, 228, + 210, 220, 229, 209, 222, 205, 230, 223, 209, 210, + 231, 224, 225, 232, 211, 234, 235, 236, 237, 238, + 239, 212, 214, 240, 241, 226, 227, 228, 210, 213, + 229, 214, 242, 243, 230, 0, 246, 0, 231, 246, + 246, 232, 0, 234, 235, 236, 237, 238, 239, 0, + + 214, 240, 241, 247, 0, 257, 247, 247, 0, 245, + 242, 243, 245, 245, 0, 245, 245, 245, 245, 245, + 245, 245, 248, 247, 249, 248, 248, 249, 249, 246, + 248, 258, 250, 257, 249, 250, 250, 251, 259, 252, + 251, 251, 252, 252, 253, 260, 247, 253, 253, 261, + 254, 247, 245, 254, 254, 264, 265, 267, 269, 258, + 268, 270, 272, 274, 276, 248, 259, 249, 268, 277, + 278, 279, 280, 260, 281, 250, 0, 261, 287, 0, + 251, 0, 252, 264, 265, 267, 269, 253, 268, 270, + 272, 274, 276, 254, 288, 289, 268, 277, 278, 279, + + 280, 283, 281, 291, 283, 283, 287, 283, 283, 283, + 283, 283, 283, 283, 284, 0, 285, 284, 284, 285, + 285, 286, 288, 289, 286, 286, 292, 293, 294, 0, + 295, 291, 296, 298, 299, 300, 0, 301, 302, 303, + 304, 305, 307, 284, 283, 308, 308, 310, 312, 313, + 315, 316, 0, 319, 292, 293, 294, 284, 295, 285, + 296, 298, 299, 300, 286, 301, 302, 303, 304, 305, + 307, 284, 320, 308, 308, 310, 312, 313, 315, 316, + 317, 319, 318, 317, 317, 318, 318, 321, 322, 0, + 323, 324, 326, 327, 328, 0, 329, 0, 330, 333, + + 320, 334, 335, 336, 337, 338, 339, 340, 341, 343, + 346, 344, 345, 346, 346, 321, 322, 318, 323, 324, + 326, 327, 328, 317, 329, 318, 330, 333, 347, 334, + 335, 336, 337, 338, 339, 340, 341, 343, 342, 344, + 345, 348, 350, 351, 353, 318, 342, 354, 355, 358, + 362, 363, 364, 346, 365, 366, 347, 367, 368, 369, + 370, 371, 372, 374, 375, 376, 342, 377, 378, 348, + 350, 351, 353, 379, 342, 354, 355, 358, 362, 363, + 364, 380, 365, 366, 381, 367, 368, 369, 370, 371, + 372, 374, 375, 376, 382, 377, 378, 383, 385, 386, + + 387, 379, 388, 389, 390, 391, 392, 393, 395, 380, + 396, 397, 381, 398, 400, 401, 402, 403, 404, 405, + 406, 407, 382, 408, 409, 383, 385, 386, 387, 410, + 388, 389, 390, 391, 392, 393, 395, 411, 396, 397, + 413, 398, 400, 401, 402, 403, 404, 405, 406, 407, + 414, 408, 409, 419, 420, 422, 423, 410, 424, 425, + 427, 428, 429, 430, 431, 411, 433, 435, 413, 436, + 438, 439, 440, 442, 443, 444, 445, 447, 414, 448, + 449, 419, 420, 422, 423, 450, 424, 425, 427, 428, + 429, 430, 431, 451, 433, 435, 453, 436, 438, 439, + + 440, 442, 443, 444, 445, 447, 456, 448, 449, 457, + 459, 460, 462, 450, 463, 464, 465, 466, 467, 468, + 469, 451, 471, 472, 453, 477, 478, 480, 481, 482, + 483, 484, 485, 487, 456, 488, 491, 457, 459, 460, + 462, 492, 463, 464, 465, 466, 467, 468, 469, 493, + 471, 472, 496, 477, 478, 480, 481, 482, 483, 484, + 485, 487, 497, 488, 491, 499, 501, 504, 507, 492, + 508, 512, 513, 514, 515, 516, 0, 493, 0, 0, + 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 497, 0, 0, 499, 501, 504, 507, 0, 508, 512, + + 513, 514, 515, 516, 521, 521, 523, 523, 525, 525, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 520, 520, 520, 520, 520 } ; static yyconst flex_int16_t yy_rule_linenum[65] = @@ -1081,7 +1095,7 @@ static yyconst flex_int16_t yy_rule_linenum[65] = 118, 119, 120, 121, 122, 123, 125, 126, 128, 130, 131, 132, 133, 134, 135, 137, 138, 141, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 160, 169, 187, 193 + 160, 169, 187, 194 } ; /* The intent behind this definition is that it'll catch @@ -1136,7 +1150,7 @@ static yyconst flex_int16_t yy_rule_linenum[65] = #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM) -#line 1140 "libmemcached/options/scanner.cc" +#line 1154 "libmemcached/options/scanner.cc" #define INITIAL 0 @@ -1443,7 +1457,7 @@ YY_DECL -#line 1447 "libmemcached/options/scanner.cc" +#line 1461 "libmemcached/options/scanner.cc" yylval = yylval_param; @@ -1509,13 +1523,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 >= 515 ) + if ( yy_current_state >= 521 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 1648 ); + while ( yy_base[yy_current_state] != 1711 ); yy_find_action: /* %% [10.0] code to find the action number goes here */ @@ -1903,17 +1917,19 @@ YY_RULE_SETUP } YY_BREAK case 63: +/* rule 63 can match eol */ YY_RULE_SETUP #line 187 "libmemcached/options/scanner.l" { - yylval->string.c_str = yytext; - yylval->string.size = yyleng; + yytext[yyleng -1]= 0; + yylval->string.c_str= yytext +1; + yylval->string.size= yyleng -2; return QUOTED_STRING; } YY_BREAK case 64: YY_RULE_SETUP -#line 193 "libmemcached/options/scanner.l" +#line 194 "libmemcached/options/scanner.l" { yyextra->begin= yytext; return UNKNOWN; @@ -1921,10 +1937,10 @@ YY_RULE_SETUP YY_BREAK case 65: YY_RULE_SETUP -#line 198 "libmemcached/options/scanner.l" +#line 199 "libmemcached/options/scanner.l" ECHO; YY_BREAK -#line 1928 "libmemcached/options/scanner.cc" +#line 1944 "libmemcached/options/scanner.cc" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2240,7 +2256,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) 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 >= 515 ) + if ( yy_current_state >= 521 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2274,11 +2290,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) 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 >= 515 ) + if ( yy_current_state >= 521 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 514); + yy_is_jam = (yy_current_state == 520); return yy_is_jam ? 0 : yy_current_state; } @@ -3190,7 +3206,7 @@ void config_free (void * ptr , yyscan_t yyscanner) /* %ok-for-header */ -#line 198 "libmemcached/options/scanner.l" +#line 199 "libmemcached/options/scanner.l" diff --git a/libmemcached/options/scanner.h b/libmemcached/options/scanner.h index 44d45934..5a16f080 100644 --- a/libmemcached/options/scanner.h +++ b/libmemcached/options/scanner.h @@ -471,7 +471,7 @@ extern int config_lex \ #undef YY_DECL #endif -#line 198 "libmemcached/options/scanner.l" +#line 199 "libmemcached/options/scanner.l" #line 478 "libmemcached/options/scanner.h" diff --git a/libmemcached/options/scanner.l b/libmemcached/options/scanner.l index 80f1c8d8..580290fb 100644 --- a/libmemcached/options/scanner.l +++ b/libmemcached/options/scanner.l @@ -184,9 +184,10 @@ JENKINS { return JENKINS; } return STRING; } -(\".*\") { - yylval->string.c_str = yytext; - yylval->string.size = yyleng; +L?\"(\\.|[^\\"])*\" { + yytext[yyleng -1]= 0; + yylval->string.c_str= yytext +1; + yylval->string.size= yyleng -2; return QUOTED_STRING; } diff --git a/libmemcached/server.cc b/libmemcached/server.cc index 6d0a47d3..52daefec 100644 --- a/libmemcached/server.cc +++ b/libmemcached/server.cc @@ -194,6 +194,7 @@ memcached_return_t memcached_server_cursor(const memcached_st *ptr, return rc; } + size_t errors= 0; for (uint32_t x= 0; x < memcached_server_count(ptr); x++) { memcached_server_instance_st instance= @@ -201,16 +202,17 @@ memcached_return_t memcached_server_cursor(const memcached_st *ptr, for (uint32_t y= 0; y < number_of_callbacks; y++) { - unsigned int iferror; + memcached_return_t ret= (*callback[y])(ptr, instance, context); - iferror= (*callback[y])(ptr, instance, context); - - if (iferror) + if (memcached_failed(ret)) + { + errors++; continue; + } } } - return MEMCACHED_SUCCESS; + return errors ? MEMCACHED_SOME_ERRORS : MEMCACHED_SUCCESS; } memcached_return_t memcached_server_execute(memcached_st *ptr, @@ -349,3 +351,26 @@ const char *memcached_server_error(memcached_server_instance_st ptr) return ptr ? ptr->cached_server_error : NULL; } +const char *memcached_server_type(memcached_server_instance_st ptr) +{ + if (ptr) + { + switch (ptr->type) + { + case MEMCACHED_CONNECTION_TCP: + return "TCP"; + + case MEMCACHED_CONNECTION_UDP: + return "UDP"; + + case MEMCACHED_CONNECTION_UNIX_SOCKET: + return "SOCKET"; + + case MEMCACHED_CONNECTION_MAX: + case MEMCACHED_CONNECTION_UNKNOWN: + break; + } + } + + return "UNKNOWN"; +} diff --git a/libmemcached/server.h b/libmemcached/server.h index 90004549..425dfb01 100644 --- a/libmemcached/server.h +++ b/libmemcached/server.h @@ -162,6 +162,9 @@ in_port_t memcached_server_port(memcached_server_instance_st self); LIBMEMCACHED_API const char *memcached_server_error(memcached_server_instance_st ptr); +LIBMEMCACHED_API +const char *memcached_server_type(memcached_server_instance_st ptr); + #ifdef __cplusplus diff --git a/tests/namespace.cc b/tests/namespace.cc index 21c14e40..54cc1301 100644 --- a/tests/namespace.cc +++ b/tests/namespace.cc @@ -83,6 +83,7 @@ test_return_t memcached_increment_namespace(memcached_st *memc) test_true(value); test_compare(2, strlen(value)); test_strcmp("10", value); + free(value); test_compare(MEMCACHED_SUCCESS, memcached_increment(clone, diff --git a/tests/parser.cc b/tests/parser.cc index bfe458df..f1020ff4 100644 --- a/tests/parser.cc +++ b/tests/parser.cc @@ -543,34 +543,61 @@ test_return_t test_hostname_port_weight(memcached_st *) return TEST_SUCCESS; } +struct socket_weight_t { + const char *socket; + size_t weight; +}; + static memcached_return_t dump_socket_information(const memcached_st *, const memcached_server_st *instance, void *context) { - if (not strcmp(memcached_server_name(instance), static_cast(context))) + socket_weight_t *check= (socket_weight_t *)context; + + if (strcmp(memcached_server_name(instance), check->socket)) { - std::cerr << std::endl << __FILE__ << ":" << __LINE__ << " " << memcached_server_name(instance) << " != " << static_cast(context) << std::endl; + std::cerr << std::endl << __FILE__ << ":" << __LINE__ << " " << memcached_server_name(instance) << " != " << check->socket << std::endl; return MEMCACHED_FAILURE; } - return MEMCACHED_SUCCESS; + if (instance->weight == check->weight) + { + return MEMCACHED_SUCCESS; + } + + return MEMCACHED_FAILURE; } test_return_t test_parse_socket(memcached_st *) { char buffer[BUFSIZ]; - test_compare_got(MEMCACHED_SUCCESS, - libmemcached_check_configuration(test_literal_param("--socket=\"/tmp/foo\""), buffer, sizeof(buffer)), - buffer); + memcached_server_fn callbacks[]= { dump_socket_information }; + { + test_compare_got(MEMCACHED_SUCCESS, + libmemcached_check_configuration(test_literal_param("--socket=\"/tmp/foo\""), buffer, sizeof(buffer)), + buffer); - memcached_st *memc= memcached(test_literal_param("--socket=\"/tmp/foo\"")); - test_true(memc); + memcached_st *memc= memcached(test_literal_param("--socket=\"/tmp/foo\"")); + test_true(memc); + socket_weight_t check= { "/tmp/foo", 1 }; + test_compare(MEMCACHED_SUCCESS, + memcached_server_cursor(memc, callbacks, &check, 1)); + memcached_free(memc); + } - memcached_server_fn callbacks[]= { dump_socket_information }; - test_true(memcached_success(memcached_server_cursor(memc, callbacks, (void*)("/tmp/foo"), 1))); + { + test_compare_got(MEMCACHED_SUCCESS, + libmemcached_check_configuration(test_literal_param("--socket=\"/tmp/foo\"/?23"), buffer, sizeof(buffer)), + buffer); - memcached_free(memc); + memcached_st *memc= memcached(test_literal_param("--socket=\"/tmp/foo\"/?23")); + test_true(memc); + socket_weight_t check= { "/tmp/foo", 23 }; + test_compare(MEMCACHED_SUCCESS, + memcached_server_cursor(memc, callbacks, &check, 1)); + memcached_free(memc); + } return TEST_SUCCESS; } -- 2.30.2