summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/snuffleupagus.c3
-rw-r--r--src/sp_config_scanner.cached.c937
-rw-r--r--src/sp_config_scanner.re26
3 files changed, 593 insertions, 373 deletions
diff --git a/src/snuffleupagus.c b/src/snuffleupagus.c
index de68130..3baad1b 100644
--- a/src/snuffleupagus.c
+++ b/src/snuffleupagus.c
@@ -223,8 +223,7 @@ PHP_RINIT_FUNCTION(snuffleupagus) {
223 if (SPG(is_config_valid) == SP_CONFIG_INVALID) { 223 if (SPG(is_config_valid) == SP_CONFIG_INVALID) {
224 sp_log_err("config", "Invalid configuration file"); 224 sp_log_err("config", "Invalid configuration file");
225 } else if (SPG(is_config_valid) == SP_CONFIG_NONE) { 225 } else if (SPG(is_config_valid) == SP_CONFIG_NONE) {
226 sp_log_warn("config", 226 sp_log_warn("config", "No configuration specificed via sp.configuration_file");
227 "No configuration specificed via sp.configuration_file");
228 } 227 }
229 } 228 }
230 229
diff --git a/src/sp_config_scanner.cached.c b/src/sp_config_scanner.cached.c
index 91144c7..bd2fa3c 100644
--- a/src/sp_config_scanner.cached.c
+++ b/src/sp_config_scanner.cached.c
@@ -11,6 +11,8 @@ enum YYCONDTYPE {
11 11
12#define cs_log_error(fmt, ...) sp_log_err("config", fmt, ##__VA_ARGS__) 12#define cs_log_error(fmt, ...) sp_log_err("config", fmt, ##__VA_ARGS__)
13#define cs_log_info(fmt, ...) sp_log_msg("config", SP_LOG_INFO, fmt, ##__VA_ARGS__) 13#define cs_log_info(fmt, ...) sp_log_msg("config", SP_LOG_INFO, fmt, ##__VA_ARGS__)
14#define cs_log_warning(fmt, ...) sp_log_warn("config", fmt, ##__VA_ARGS__)
15
14 16
15zend_string *sp_get_arg_string(sp_parsed_keyword *kw) { 17zend_string *sp_get_arg_string(sp_parsed_keyword *kw) {
16 if (!kw || !kw->arg) { 18 if (!kw || !kw->arg) {
@@ -133,6 +135,12 @@ static int sy_apply_op(char op, int a, int b) {
133 int res = sy_apply_op(op, a, b); \ 135 int res = sy_apply_op(op, a, b); \
134 sy_res_push(res); 136 sy_res_push(res);
135 137
138#define TMPSTR(tmpstr, t2, t1) \
139 char tmpstr[1024]; \
140 size_t tmplen = MIN(t2-t1-2, 1023); \
141 strncpy(tmpstr, t1+1, tmplen); \
142 tmpstr[tmplen] = 0;
143
136 144
137zend_result sp_config_scan(char *data, zend_result (*process_rule)(sp_parsed_keyword*)) 145zend_result sp_config_scan(char *data, zend_result (*process_rule)(sp_parsed_keyword*))
138{ 146{
@@ -270,23 +278,23 @@ yy12:
270yy15: 278yy15:
271 yyaccept = 0; 279 yyaccept = 0;
272 yych = *(YYMARKER = ++YYCURSOR); 280 yych = *(YYMARKER = ++YYCURSOR);
273 if (yych <= 'd') { 281 switch (yych) {
274 if (yych == 'c') goto yy17; 282 case 'c': goto yy17;
275 goto yy5; 283 case 'e': goto yy19;
276 } else { 284 case 'i': goto yy20;
277 if (yych <= 'e') goto yy19; 285 case 'l': goto yy21;
278 if (yych == 'l') goto yy20; 286 case 'w': goto yy22;
279 goto yy5; 287 default: goto yy5;
280 } 288 }
281yy16: 289yy16:
282 yyaccept = 0; 290 yyaccept = 0;
283 yych = *(YYMARKER = ++YYCURSOR); 291 yych = *(YYMARKER = ++YYCURSOR);
284 if (yych == 'e') goto yy21; 292 if (yych == 'e') goto yy23;
285 if (yych == 'p') goto yy22; 293 if (yych == 'p') goto yy24;
286 goto yy5; 294 goto yy5;
287yy17: 295yy17:
288 yych = *++YYCURSOR; 296 yych = *++YYCURSOR;
289 if (yych == 'o') goto yy24; 297 if (yych == 'o') goto yy26;
290yy18: 298yy18:
291 YYCURSOR = YYMARKER; 299 YYCURSOR = YYMARKER;
292 if (yyaccept <= 2) { 300 if (yyaccept <= 2) {
@@ -294,225 +302,406 @@ yy18:
294 if (yyaccept == 0) { 302 if (yyaccept == 0) {
295 goto yy5; 303 goto yy5;
296 } else { 304 } else {
297 yyt1 = YYCURSOR; 305 goto yy66;
298 goto yy37;
299 } 306 }
300 } else { 307 } else {
301 goto yy37; 308 goto yy70;
302 } 309 }
303 } else { 310 } else {
304 if (yyaccept == 3) { 311 if (yyaccept <= 4) {
305 yyt4 = YYCURSOR; 312 if (yyaccept == 3) {
306 goto yy57; 313 goto yy83;
314 } else {
315 yyt4 = YYCURSOR;
316 goto yy88;
317 }
307 } else { 318 } else {
308 goto yy57; 319 goto yy88;
309 } 320 }
310 } 321 }
311yy19: 322yy19:
312 yych = *++YYCURSOR; 323 yych = *++YYCURSOR;
313 if (yych == 'n') goto yy25; 324 if (yych == 'n') goto yy27;
325 if (yych == 'r') goto yy28;
314 goto yy18; 326 goto yy18;
315yy20: 327yy20:
316 yych = *++YYCURSOR; 328 yych = *++YYCURSOR;
317 if (yych == 'o') goto yy26; 329 if (yych == 'n') goto yy29;
318 goto yy18; 330 goto yy18;
319yy21: 331yy21:
320 yych = *++YYCURSOR; 332 yych = *++YYCURSOR;
321 if (yych == 't') goto yy27; 333 if (yych == 'o') goto yy30;
322 goto yy18; 334 goto yy18;
323yy22: 335yy22:
324 ++YYCURSOR;
325 { kw_i = 0; goto yyc_rule; }
326yy24:
327 yych = *++YYCURSOR; 336 yych = *++YYCURSOR;
328 if (yych == 'n') goto yy28; 337 if (yych == 'a') goto yy31;
329 goto yy18; 338 goto yy18;
330yy25: 339yy23:
331 yych = *++YYCURSOR; 340 yych = *++YYCURSOR;
332 if (yych == 'd') goto yy29; 341 if (yych == 't') goto yy32;
333 goto yy18; 342 goto yy18;
343yy24:
344 ++YYCURSOR;
345 { kw_i = 0; goto yyc_rule; }
334yy26: 346yy26:
335 yych = *++YYCURSOR; 347 yych = *++YYCURSOR;
336 if (yych == 'g') goto yy30; 348 if (yych == 'n') goto yy33;
337 goto yy18; 349 goto yy18;
338yy27: 350yy27:
339 yych = *++YYCURSOR; 351 yych = *++YYCURSOR;
340 if (yych == '\t') goto yy31; 352 if (yych == 'd') goto yy34;
341 if (yych == ' ') goto yy31;
342 goto yy18; 353 goto yy18;
343yy28: 354yy28:
344 yych = *++YYCURSOR; 355 yych = *++YYCURSOR;
345 if (yych == 'd') goto yy33; 356 if (yych == 'r') goto yy35;
346 goto yy18; 357 goto yy18;
347yy29: 358yy29:
348 yych = *++YYCURSOR; 359 yych = *++YYCURSOR;
349 if (yych == '_') goto yy34; 360 if (yych == 'f') goto yy36;
350 goto yy18; 361 goto yy18;
351yy30: 362yy30:
352 yych = *++YYCURSOR; 363 yych = *++YYCURSOR;
353 if (yych == '\t') goto yy35; 364 if (yych == 'g') goto yy37;
354 if (yych == ' ') goto yy35;
355 goto yy18; 365 goto yy18;
356yy31: 366yy31:
357 yych = *++YYCURSOR; 367 yych = *++YYCURSOR;
368 if (yych == 'r') goto yy38;
369 goto yy18;
370yy32:
371 yych = *++YYCURSOR;
372 if (yych == '\t') goto yy39;
373 if (yych == ' ') goto yy39;
374 goto yy18;
375yy33:
376 yych = *++YYCURSOR;
377 if (yych == 'd') goto yy41;
378 goto yy18;
379yy34:
380 yych = *++YYCURSOR;
381 if (yych == '_') goto yy42;
382 goto yy18;
383yy35:
384 yych = *++YYCURSOR;
385 if (yych == '"') goto yy18;
386 if (yych == 'o') goto yy45;
387 goto yy44;
388yy36:
389 yych = *++YYCURSOR;
390 if (yych != 'o') goto yy18;
391yy37:
392 yych = *++YYCURSOR;
393 if (yych == '"') goto yy18;
394 goto yy47;
395yy38:
396 yych = *++YYCURSOR;
397 if (yych == 'n') goto yy48;
398 goto yy18;
399yy39:
400 yych = *++YYCURSOR;
358 if (yych <= '@') { 401 if (yych <= '@') {
359 if (yych <= '\t') { 402 if (yych <= '\t') {
360 if (yych <= 0x08) goto yy18; 403 if (yych <= 0x08) goto yy18;
361 goto yy31; 404 goto yy39;
362 } else { 405 } else {
363 if (yych == ' ') goto yy31; 406 if (yych == ' ') goto yy39;
364 goto yy18; 407 goto yy18;
365 } 408 }
366 } else { 409 } else {
367 if (yych <= '_') { 410 if (yych <= '_') {
368 if (yych <= 'Z') { 411 if (yych <= 'Z') {
369 yyt1 = YYCURSOR; 412 yyt1 = YYCURSOR;
370 goto yy38; 413 goto yy49;
371 } 414 }
372 if (yych <= '^') goto yy18; 415 if (yych <= '^') goto yy18;
373 yyt1 = YYCURSOR; 416 yyt1 = YYCURSOR;
374 goto yy38; 417 goto yy49;
375 } else { 418 } else {
376 if (yych <= '`') goto yy18; 419 if (yych <= '`') goto yy18;
377 if (yych <= 'z') { 420 if (yych <= 'z') {
378 yyt1 = YYCURSOR; 421 yyt1 = YYCURSOR;
379 goto yy38; 422 goto yy49;
380 } 423 }
381 goto yy18; 424 goto yy18;
382 } 425 }
383 } 426 }
384yy33: 427yy41:
385 yych = *++YYCURSOR; 428 yych = *++YYCURSOR;
386 if (yych == 'i') goto yy40; 429 if (yych == 'i') goto yy51;
387 goto yy18; 430 goto yy18;
388yy34: 431yy42:
389 yych = *++YYCURSOR; 432 yych = *++YYCURSOR;
390 if (yych == 'c') goto yy41; 433 if (yych == 'c') goto yy52;
391 goto yy18; 434 goto yy18;
392yy35: 435yy43:
393 yyaccept = 1; 436 yych = *++YYCURSOR;
394 yych = *(YYMARKER = ++YYCURSOR); 437yy44:
395 if (yych <= 0x1F) { 438 if (yych <= 0x1F) {
396 if (yych == '\t') goto yy35; 439 if (yych == '\t') goto yy43;
397 yyt1 = YYCURSOR; 440 goto yy18;
398 } else { 441 } else {
399 if (yych <= ' ') goto yy35; 442 if (yych <= ' ') goto yy43;
400 if (yych == '"') { 443 if (yych == '"') {
401 yyt1 = YYCURSOR; 444 yyt1 = YYCURSOR;
402 goto yy42; 445 goto yy53;
403 } 446 }
404 yyt1 = YYCURSOR; 447 goto yy18;
405 } 448 }
406yy37: 449yy45:
407 t1 = yyt1; 450 yych = *++YYCURSOR;
408 t2 = YYCURSOR; 451 if (yych == 'r') goto yy55;
409 { 452 goto yy18;
410 char tmpstr[1024]; 453yy46:
411 size_t tmplen = MIN(t2-t1-2, 1023); 454 yych = *++YYCURSOR;
412 strncpy(tmpstr, t1+1, tmplen); 455yy47:
413 tmpstr[tmplen] = 0; 456 if (yych <= 0x1F) {
414 cs_log_info("[line %d]: %s", lineno, tmpstr); 457 if (yych == '\t') goto yy46;
415 goto yyc_init; 458 goto yy18;
416 } 459 } else {
417yy38: 460 if (yych <= ' ') goto yy46;
461 if (yych == '"') {
462 yyt1 = YYCURSOR;
463 goto yy56;
464 }
465 goto yy18;
466 }
467yy48:
468 yych = *++YYCURSOR;
469 if (yych == '"') goto yy18;
470 if (yych == 'i') goto yy60;
471 goto yy59;
472yy49:
418 yych = *++YYCURSOR; 473 yych = *++YYCURSOR;
419 if (yybm[0+yych] & 32) { 474 if (yybm[0+yych] & 32) {
420 goto yy38; 475 goto yy49;
421 } 476 }
422 if (yych == '\t') { 477 if (yych == '\t') {
423 yyt2 = YYCURSOR; 478 yyt2 = YYCURSOR;
424 goto yy44; 479 goto yy61;
425 } 480 }
426 if (yych == ' ') { 481 if (yych == ' ') {
427 yyt2 = YYCURSOR; 482 yyt2 = YYCURSOR;
428 goto yy44; 483 goto yy61;
429 } 484 }
430 goto yy18; 485 goto yy18;
431yy40: 486yy51:
432 yych = *++YYCURSOR; 487 yych = *++YYCURSOR;
433 if (yych == 't') goto yy46; 488 if (yych == 't') goto yy63;
434 goto yy18; 489 goto yy18;
435yy41: 490yy52:
436 yych = *++YYCURSOR; 491 yych = *++YYCURSOR;
437 if (yych == 'o') goto yy47; 492 if (yych == 'o') goto yy64;
438 goto yy18; 493 goto yy18;
439yy42: 494yy53:
440 yych = *++YYCURSOR; 495 yych = *++YYCURSOR;
441 if (yybm[0+yych] & 64) { 496 if (yybm[0+yych] & 64) {
442 goto yy42; 497 goto yy53;
443 } 498 }
444 if (yych <= '\r') goto yy18; 499 if (yych <= '\r') goto yy18;
445 if (yych <= '"') goto yy48; 500 if (yych <= '"') goto yy65;
446 goto yy49; 501 goto yy67;
447yy44: 502yy55:
448 yych = *++YYCURSOR; 503 yych = *++YYCURSOR;
504 if (yych == '"') goto yy18;
505 goto yy44;
506yy56:
507 yych = *++YYCURSOR;
508 if (yych <= '\r') {
509 if (yych == '\n') goto yy18;
510 if (yych <= '\f') goto yy56;
511 goto yy18;
512 } else {
513 if (yych <= '"') {
514 if (yych <= '!') goto yy56;
515 goto yy69;
516 } else {
517 if (yych == '\\') goto yy71;
518 goto yy56;
519 }
520 }
521yy58:
522 yych = *++YYCURSOR;
523yy59:
449 if (yych <= 0x1F) { 524 if (yych <= 0x1F) {
450 if (yych == '\t') goto yy44; 525 if (yych == '\t') goto yy58;
451 goto yy18; 526 goto yy18;
452 } else { 527 } else {
453 if (yych <= ' ') goto yy44; 528 if (yych <= ' ') goto yy58;
529 if (yych == '"') {
530 yyt1 = YYCURSOR;
531 goto yy73;
532 }
533 goto yy18;
534 }
535yy60:
536 yych = *++YYCURSOR;
537 if (yych == 'n') goto yy75;
538 goto yy18;
539yy61:
540 yych = *++YYCURSOR;
541 if (yych <= 0x1F) {
542 if (yych == '\t') goto yy61;
543 goto yy18;
544 } else {
545 if (yych <= ' ') goto yy61;
454 if (yych == '"') { 546 if (yych == '"') {
455 yyt3 = YYCURSOR; 547 yyt3 = YYCURSOR;
456 goto yy51; 548 goto yy76;
457 } 549 }
458 goto yy18; 550 goto yy18;
459 } 551 }
460yy46: 552yy63:
461 yych = *++YYCURSOR; 553 yych = *++YYCURSOR;
462 if (yych == 'i') goto yy53; 554 if (yych == 'i') goto yy78;
463 goto yy18; 555 goto yy18;
464yy47: 556yy64:
465 yych = *++YYCURSOR; 557 yych = *++YYCURSOR;
466 if (yych == 'n') goto yy54; 558 if (yych == 'n') goto yy79;
467 goto yy18; 559 goto yy18;
468yy48: 560yy65:
469 ++YYCURSOR; 561 ++YYCURSOR;
470 goto yy37; 562yy66:
471yy49: 563 t1 = yyt1;
564 t2 = YYCURSOR;
565 {
566 TMPSTR(tmpstr, t2, t1);
567 cs_log_error("[line %d]: %s", lineno, tmpstr);
568 goto out;
569 }
570yy67:
472 yych = *++YYCURSOR; 571 yych = *++YYCURSOR;
473 if (yybm[0+yych] & 64) { 572 if (yybm[0+yych] & 64) {
474 goto yy42; 573 goto yy53;
475 } 574 }
476 if (yych <= '\r') goto yy18; 575 if (yych <= '\r') goto yy18;
477 if (yych <= '"') goto yy55; 576 if (yych <= '"') goto yy80;
478 goto yy49; 577 goto yy67;
479yy51: 578yy69:
579 ++YYCURSOR;
580yy70:
581 t1 = yyt1;
582 t2 = YYCURSOR;
583 {
584 TMPSTR(tmpstr, t2, t1);
585 sp_log_debug("tmplen: %d", tmplen);
586 cs_log_info("[line %d]: %s", lineno, tmpstr);
587 goto yyc_init;
588 }
589yy71:
480 yych = *++YYCURSOR; 590 yych = *++YYCURSOR;
481 if (yych <= '\r') { 591 if (yych <= '\r') {
482 if (yych == '\n') goto yy18; 592 if (yych == '\n') goto yy18;
483 if (yych <= '\f') goto yy51; 593 if (yych <= '\f') goto yy56;
484 goto yy18; 594 goto yy18;
485 } else { 595 } else {
486 if (yych <= '"') { 596 if (yych <= '"') {
487 if (yych <= '!') goto yy51; 597 if (yych <= '!') goto yy56;
598 goto yy81;
599 } else {
600 if (yych == '\\') goto yy71;
488 goto yy56; 601 goto yy56;
602 }
603 }
604yy73:
605 yych = *++YYCURSOR;
606 if (yych <= '\r') {
607 if (yych == '\n') goto yy18;
608 if (yych <= '\f') goto yy73;
609 goto yy18;
610 } else {
611 if (yych <= '"') {
612 if (yych <= '!') goto yy73;
613 goto yy82;
489 } else { 614 } else {
490 if (yych == '\\') goto yy58; 615 if (yych == '\\') goto yy84;
491 goto yy51; 616 goto yy73;
492 } 617 }
493 } 618 }
494yy53: 619yy75:
495 yych = *++YYCURSOR; 620 yych = *++YYCURSOR;
496 if (yych == 'o') goto yy60; 621 if (yych == 'g') goto yy86;
497 goto yy18; 622 goto yy18;
498yy54: 623yy76:
499 yych = *++YYCURSOR; 624 yych = *++YYCURSOR;
500 if (yych == 'd') goto yy61; 625 if (yych <= '\r') {
626 if (yych == '\n') goto yy18;
627 if (yych <= '\f') goto yy76;
628 goto yy18;
629 } else {
630 if (yych <= '"') {
631 if (yych <= '!') goto yy76;
632 goto yy87;
633 } else {
634 if (yych == '\\') goto yy89;
635 goto yy76;
636 }
637 }
638yy78:
639 yych = *++YYCURSOR;
640 if (yych == 'o') goto yy91;
501 goto yy18; 641 goto yy18;
502yy55: 642yy79:
503 yyaccept = 2; 643 yych = *++YYCURSOR;
644 if (yych == 'd') goto yy92;
645 goto yy18;
646yy80:
647 yyaccept = 1;
504 yych = *(YYMARKER = ++YYCURSOR); 648 yych = *(YYMARKER = ++YYCURSOR);
505 if (yybm[0+yych] & 64) { 649 if (yybm[0+yych] & 64) {
506 goto yy42; 650 goto yy53;
507 } 651 }
508 if (yych <= '\r') goto yy37; 652 if (yych <= '\r') goto yy66;
509 if (yych <= '"') goto yy48; 653 if (yych <= '"') goto yy65;
510 goto yy49; 654 goto yy67;
511yy56: 655yy81:
656 yyaccept = 2;
657 yych = *(YYMARKER = ++YYCURSOR);
658 if (yych <= '\r') {
659 if (yych == '\n') goto yy70;
660 if (yych <= '\f') goto yy56;
661 goto yy70;
662 } else {
663 if (yych <= '"') {
664 if (yych <= '!') goto yy56;
665 goto yy69;
666 } else {
667 if (yych == '\\') goto yy71;
668 goto yy56;
669 }
670 }
671yy82:
672 ++YYCURSOR;
673yy83:
674 t1 = yyt1;
675 t2 = YYCURSOR;
676 {
677 TMPSTR(tmpstr, t2, t1);
678 cs_log_warning("[line %d]: %s", lineno, tmpstr);
679 goto yyc_init;
680 }
681yy84:
682 yych = *++YYCURSOR;
683 if (yych <= '\r') {
684 if (yych == '\n') goto yy18;
685 if (yych <= '\f') goto yy73;
686 goto yy18;
687 } else {
688 if (yych <= '"') {
689 if (yych <= '!') goto yy73;
690 goto yy93;
691 } else {
692 if (yych == '\\') goto yy84;
693 goto yy73;
694 }
695 }
696yy86:
697 yych = *++YYCURSOR;
698 if (yych == '"') goto yy18;
699 goto yy59;
700yy87:
512 yych = *++YYCURSOR; 701 yych = *++YYCURSOR;
513 yyt4 = YYCURSOR; 702 yyt4 = YYCURSOR;
514 goto yy63; 703 goto yy95;
515yy57: 704yy88:
516 t1 = yyt1; 705 t1 = yyt1;
517 t2 = yyt2; 706 t2 = yyt2;
518 t3 = yyt3; 707 t3 = yyt3;
@@ -528,142 +717,158 @@ yy57:
528 zend_hash_str_add_ptr(&vars, key, keylen, tmp); 717 zend_hash_str_add_ptr(&vars, key, keylen, tmp);
529 goto yyc_init; 718 goto yyc_init;
530 } 719 }
531yy58: 720yy89:
532 yych = *++YYCURSOR; 721 yych = *++YYCURSOR;
533 if (yych <= '\r') { 722 if (yych <= '\r') {
534 if (yych == '\n') goto yy18; 723 if (yych == '\n') goto yy18;
535 if (yych <= '\f') goto yy51; 724 if (yych <= '\f') goto yy76;
536 goto yy18; 725 goto yy18;
537 } else { 726 } else {
538 if (yych <= '"') { 727 if (yych <= '"') {
539 if (yych <= '!') goto yy51; 728 if (yych <= '!') goto yy76;
540 goto yy65; 729 goto yy97;
541 } else { 730 } else {
542 if (yych == '\\') goto yy58; 731 if (yych == '\\') goto yy89;
543 goto yy51; 732 goto yy76;
544 } 733 }
545 } 734 }
546yy60: 735yy91:
547 yych = *++YYCURSOR; 736 yych = *++YYCURSOR;
548 if (yych == 'n') goto yy66; 737 if (yych == 'n') goto yy98;
549 goto yy18; 738 goto yy18;
550yy61: 739yy92:
551 yych = *++YYCURSOR; 740 yych = *++YYCURSOR;
552 if (yych == 'i') goto yy67; 741 if (yych == 'i') goto yy99;
553 goto yy18; 742 goto yy18;
554yy62: 743yy93:
744 yyaccept = 3;
745 yych = *(YYMARKER = ++YYCURSOR);
746 if (yych <= '\r') {
747 if (yych == '\n') goto yy83;
748 if (yych <= '\f') goto yy73;
749 goto yy83;
750 } else {
751 if (yych <= '"') {
752 if (yych <= '!') goto yy73;
753 goto yy82;
754 } else {
755 if (yych == '\\') goto yy84;
756 goto yy73;
757 }
758 }
759yy94:
555 yych = *++YYCURSOR; 760 yych = *++YYCURSOR;
556yy63: 761yy95:
557 if (yych <= 0x1F) { 762 if (yych <= 0x1F) {
558 if (yych == '\t') goto yy62; 763 if (yych == '\t') goto yy94;
559 goto yy57; 764 goto yy88;
560 } else { 765 } else {
561 if (yych <= ' ') goto yy62; 766 if (yych <= ' ') goto yy94;
562 if (yych != ';') goto yy57; 767 if (yych != ';') goto yy88;
563 } 768 }
564 ++YYCURSOR; 769 ++YYCURSOR;
565 goto yy57; 770 goto yy88;
566yy65: 771yy97:
567 yyaccept = 3; 772 yyaccept = 4;
568 yych = *(YYMARKER = ++YYCURSOR); 773 yych = *(YYMARKER = ++YYCURSOR);
569 if (yych <= ' ') { 774 if (yych <= ' ') {
570 if (yych <= '\n') { 775 if (yych <= '\n') {
571 if (yych <= 0x08) goto yy51; 776 if (yych <= 0x08) goto yy76;
572 if (yych <= '\t') { 777 if (yych <= '\t') {
573 yyt4 = YYCURSOR; 778 yyt4 = YYCURSOR;
574 goto yy68; 779 goto yy100;
575 } 780 }
576 yyt4 = YYCURSOR; 781 yyt4 = YYCURSOR;
577 goto yy57; 782 goto yy88;
578 } else { 783 } else {
579 if (yych == '\r') { 784 if (yych == '\r') {
580 yyt4 = YYCURSOR; 785 yyt4 = YYCURSOR;
581 goto yy57; 786 goto yy88;
582 } 787 }
583 if (yych <= 0x1F) goto yy51; 788 if (yych <= 0x1F) goto yy76;
584 yyt4 = YYCURSOR; 789 yyt4 = YYCURSOR;
585 goto yy68; 790 goto yy100;
586 } 791 }
587 } else { 792 } else {
588 if (yych <= ':') { 793 if (yych <= ':') {
589 if (yych == '"') goto yy56; 794 if (yych == '"') goto yy87;
590 goto yy51; 795 goto yy76;
591 } else { 796 } else {
592 if (yych <= ';') { 797 if (yych <= ';') {
593 yyt4 = YYCURSOR; 798 yyt4 = YYCURSOR;
594 goto yy70; 799 goto yy102;
595 } 800 }
596 if (yych == '\\') goto yy58; 801 if (yych == '\\') goto yy89;
597 goto yy51; 802 goto yy76;
598 } 803 }
599 } 804 }
600yy66: 805yy98:
601 yych = *++YYCURSOR; 806 yych = *++YYCURSOR;
602 if (yych == '\t') goto yy71; 807 if (yych == '\t') goto yy103;
603 if (yych == ' ') goto yy71; 808 if (yych == ' ') goto yy103;
604 goto yy18; 809 goto yy18;
605yy67: 810yy99:
606 yych = *++YYCURSOR; 811 yych = *++YYCURSOR;
607 if (yych == 't') goto yy74; 812 if (yych == 't') goto yy106;
608 goto yy18; 813 goto yy18;
609yy68: 814yy100:
610 yyaccept = 4; 815 yyaccept = 5;
611 yych = *(YYMARKER = ++YYCURSOR); 816 yych = *(YYMARKER = ++YYCURSOR);
612 if (yych <= ' ') { 817 if (yych <= ' ') {
613 if (yych <= '\n') { 818 if (yych <= '\n') {
614 if (yych <= 0x08) goto yy51; 819 if (yych <= 0x08) goto yy76;
615 if (yych <= '\t') goto yy68; 820 if (yych <= '\t') goto yy100;
616 goto yy57; 821 goto yy88;
617 } else { 822 } else {
618 if (yych == '\r') goto yy57; 823 if (yych == '\r') goto yy88;
619 if (yych <= 0x1F) goto yy51; 824 if (yych <= 0x1F) goto yy76;
620 goto yy68; 825 goto yy100;
621 } 826 }
622 } else { 827 } else {
623 if (yych <= ':') { 828 if (yych <= ':') {
624 if (yych == '"') goto yy56; 829 if (yych == '"') goto yy87;
625 goto yy51; 830 goto yy76;
626 } else { 831 } else {
627 if (yych <= ';') goto yy70; 832 if (yych <= ';') goto yy102;
628 if (yych == '\\') goto yy58; 833 if (yych == '\\') goto yy89;
629 goto yy51; 834 goto yy76;
630 } 835 }
631 } 836 }
632yy70: 837yy102:
633 yyaccept = 4; 838 yyaccept = 5;
634 yych = *(YYMARKER = ++YYCURSOR); 839 yych = *(YYMARKER = ++YYCURSOR);
635 if (yych <= '\r') { 840 if (yych <= '\r') {
636 if (yych == '\n') goto yy57; 841 if (yych == '\n') goto yy88;
637 if (yych <= '\f') goto yy51; 842 if (yych <= '\f') goto yy76;
638 goto yy57; 843 goto yy88;
639 } else { 844 } else {
640 if (yych <= '"') { 845 if (yych <= '"') {
641 if (yych <= '!') goto yy51; 846 if (yych <= '!') goto yy76;
642 goto yy56; 847 goto yy87;
643 } else { 848 } else {
644 if (yych == '\\') goto yy58; 849 if (yych == '\\') goto yy89;
645 goto yy51; 850 goto yy76;
646 } 851 }
647 } 852 }
648yy71: 853yy103:
649 yych = *++YYCURSOR; 854 yych = *++YYCURSOR;
650 if (yych == '\t') goto yy71; 855 if (yych == '\t') goto yy103;
651 if (yych == ' ') goto yy71; 856 if (yych == ' ') goto yy103;
652 { goto yyc_cond; } 857 { goto yyc_cond; }
653yy74: 858yy106:
654 yych = *++YYCURSOR; 859 yych = *++YYCURSOR;
655 if (yych != 'i') goto yy18; 860 if (yych != 'i') goto yy18;
656 yych = *++YYCURSOR; 861 yych = *++YYCURSOR;
657 if (yych != 'o') goto yy18; 862 if (yych != 'o') goto yy18;
658 yych = *++YYCURSOR; 863 yych = *++YYCURSOR;
659 if (yych != 'n') goto yy18; 864 if (yych != 'n') goto yy18;
660yy77: 865yy109:
661 yych = *++YYCURSOR; 866 yych = *++YYCURSOR;
662 if (yych <= 0x1F) { 867 if (yych <= 0x1F) {
663 if (yych == '\t') goto yy77; 868 if (yych == '\t') goto yy109;
664 goto yy18; 869 goto yy18;
665 } else { 870 } else {
666 if (yych <= ' ') goto yy77; 871 if (yych <= ' ') goto yy109;
667 if (yych != ';') goto yy18; 872 if (yych != ';') goto yy18;
668 } 873 }
669 ++YYCURSOR; 874 ++YYCURSOR;
@@ -708,85 +913,85 @@ yyc_cond:
708 }; 913 };
709 yych = *YYCURSOR; 914 yych = *YYCURSOR;
710 if (yybm[0+yych] & 8) { 915 if (yybm[0+yych] & 8) {
711 goto yy85; 916 goto yy117;
712 } 917 }
713 if (yych <= '(') { 918 if (yych <= '(') {
714 if (yych <= '\r') { 919 if (yych <= '\r') {
715 if (yych <= 0x08) goto yy83; 920 if (yych <= 0x08) goto yy115;
716 if (yych <= '\n') goto yy88; 921 if (yych <= '\n') goto yy120;
717 if (yych >= '\r') goto yy90; 922 if (yych >= '\r') goto yy122;
718 } else { 923 } else {
719 if (yych <= 0x1F) goto yy83; 924 if (yych <= 0x1F) goto yy115;
720 if (yych <= '!') goto yy91; 925 if (yych <= '!') goto yy123;
721 if (yych >= '(') goto yy93; 926 if (yych >= '(') goto yy125;
722 } 927 }
723 } else { 928 } else {
724 if (yych <= 'Z') { 929 if (yych <= 'Z') {
725 if (yych <= '/') goto yy83; 930 if (yych <= '/') goto yy115;
726 if (yych <= '9') { 931 if (yych <= '9') {
727 yyt1 = YYCURSOR; 932 yyt1 = YYCURSOR;
728 goto yy95; 933 goto yy127;
729 } 934 }
730 if (yych >= 'A') { 935 if (yych >= 'A') {
731 yyt1 = YYCURSOR; 936 yyt1 = YYCURSOR;
732 goto yy98; 937 goto yy130;
733 } 938 }
734 } else { 939 } else {
735 if (yych <= '_') { 940 if (yych <= '_') {
736 if (yych >= '_') { 941 if (yych >= '_') {
737 yyt1 = YYCURSOR; 942 yyt1 = YYCURSOR;
738 goto yy98; 943 goto yy130;
739 } 944 }
740 } else { 945 } else {
741 if (yych <= '`') goto yy83; 946 if (yych <= '`') goto yy115;
742 if (yych <= 'z') { 947 if (yych <= 'z') {
743 yyt1 = YYCURSOR; 948 yyt1 = YYCURSOR;
744 goto yy98; 949 goto yy130;
745 } 950 }
746 } 951 }
747 } 952 }
748 } 953 }
749yy83: 954yy115:
750 ++YYCURSOR; 955 ++YYCURSOR;
751yy84: 956yy116:
752 { cs_log_error("Syntax error in condition on line %d", lineno); goto out; } 957 { cs_log_error("Syntax error in condition on line %d", lineno); goto out; }
753yy85: 958yy117:
754 yych = *++YYCURSOR; 959 yych = *++YYCURSOR;
755 if (yybm[0+yych] & 8) { 960 if (yybm[0+yych] & 8) {
756 goto yy85; 961 goto yy117;
757 } 962 }
758 { goto yyc_cond; } 963 { goto yyc_cond; }
759yy88: 964yy120:
760 ++YYCURSOR; 965 ++YYCURSOR;
761 { lineno++; goto yyc_cond; } 966 { lineno++; goto yyc_cond; }
762yy90: 967yy122:
763 yych = *++YYCURSOR; 968 yych = *++YYCURSOR;
764 if (yych == '\n') goto yy88; 969 if (yych == '\n') goto yy120;
765 goto yy84; 970 goto yy116;
766yy91: 971yy123:
767 ++YYCURSOR; 972 ++YYCURSOR;
768 t1 = YYCURSOR - 1; 973 t1 = YYCURSOR - 1;
769 { sy_op_push(*t1); goto yyc_cond; } 974 { sy_op_push(*t1); goto yyc_cond; }
770yy93: 975yy125:
771 ++YYCURSOR; 976 ++YYCURSOR;
772 t1 = YYCURSOR - 1; 977 t1 = YYCURSOR - 1;
773 { sy_op_push(*t1); goto yyc_cond; } 978 { sy_op_push(*t1); goto yyc_cond; }
774yy95: 979yy127:
775 yych = *++YYCURSOR; 980 yych = *++YYCURSOR;
776 if (yybm[0+yych] & 16) { 981 if (yybm[0+yych] & 16) {
777 goto yy95; 982 goto yy127;
778 } 983 }
779 t1 = yyt1; 984 t1 = yyt1;
780 t2 = YYCURSOR; 985 t2 = YYCURSOR;
781 { sy_res_push(atoi(t1)); goto yyc_cond_op; } 986 { sy_res_push(atoi(t1)); goto yyc_cond_op; }
782yy98: 987yy130:
783 yyaccept = 0; 988 yyaccept = 0;
784 yych = *(YYMARKER = ++YYCURSOR); 989 yych = *(YYMARKER = ++YYCURSOR);
785 if (yybm[0+yych] & 32) { 990 if (yybm[0+yych] & 32) {
786 goto yy98; 991 goto yy130;
787 } 992 }
788 if (yych == '(') goto yy101; 993 if (yych == '(') goto yy133;
789yy100: 994yy132:
790 t1 = yyt1; 995 t1 = yyt1;
791 t2 = YYCURSOR; 996 t2 = YYCURSOR;
792 { 997 {
@@ -798,34 +1003,34 @@ yy100:
798 sy_res_push(atoi(ZSTR_VAL(tmp))); 1003 sy_res_push(atoi(ZSTR_VAL(tmp)));
799 goto yyc_cond_op; 1004 goto yyc_cond_op;
800 } 1005 }
801yy101: 1006yy133:
802 yych = *++YYCURSOR; 1007 yych = *++YYCURSOR;
803 if (yych == '"') { 1008 if (yych == '"') {
804 yyt2 = YYCURSOR; 1009 yyt2 = YYCURSOR;
805 goto yy103; 1010 goto yy135;
806 } 1011 }
807 if (yych == ')') { 1012 if (yych == ')') {
808 yyt2 = YYCURSOR; 1013 yyt2 = YYCURSOR;
809 goto yy105; 1014 goto yy137;
810 } 1015 }
811yy102: 1016yy134:
812 YYCURSOR = YYMARKER; 1017 YYCURSOR = YYMARKER;
813 if (yyaccept == 0) { 1018 if (yyaccept == 0) {
814 goto yy100; 1019 goto yy132;
815 } else { 1020 } else {
816 goto yy106; 1021 goto yy138;
817 } 1022 }
818yy103: 1023yy135:
819 yych = *++YYCURSOR; 1024 yych = *++YYCURSOR;
820 if (yybm[0+yych] & 64) { 1025 if (yybm[0+yych] & 64) {
821 goto yy103; 1026 goto yy135;
822 } 1027 }
823 if (yych <= '\r') goto yy102; 1028 if (yych <= '\r') goto yy134;
824 if (yych <= '"') goto yy107; 1029 if (yych <= '"') goto yy139;
825 goto yy108; 1030 goto yy140;
826yy105: 1031yy137:
827 ++YYCURSOR; 1032 ++YYCURSOR;
828yy106: 1033yy138:
829 t1 = yyt1; 1034 t1 = yyt1;
830 t3 = yyt2; 1035 t3 = yyt2;
831 t2 = yyt2 - 1; 1036 t2 = yyt2 - 1;
@@ -840,41 +1045,41 @@ yy106:
840 } 1045 }
841 goto yyc_cond_op; 1046 goto yyc_cond_op;
842 } 1047 }
843yy107: 1048yy139:
844 yych = *++YYCURSOR; 1049 yych = *++YYCURSOR;
845 if (yych == ')') goto yy105; 1050 if (yych == ')') goto yy137;
846 goto yy102; 1051 goto yy134;
847yy108: 1052yy140:
848 yych = *++YYCURSOR; 1053 yych = *++YYCURSOR;
849 if (yybm[0+yych] & 64) { 1054 if (yybm[0+yych] & 64) {
850 goto yy103; 1055 goto yy135;
851 } 1056 }
852 if (yych <= '\r') goto yy102; 1057 if (yych <= '\r') goto yy134;
853 if (yych >= '#') goto yy108; 1058 if (yych >= '#') goto yy140;
854 yych = *++YYCURSOR; 1059 yych = *++YYCURSOR;
855 if (yybm[0+yych] & 128) { 1060 if (yybm[0+yych] & 128) {
856 goto yy108; 1061 goto yy140;
857 } 1062 }
858 if (yych <= '\r') { 1063 if (yych <= '\r') {
859 if (yych == '\n') goto yy102; 1064 if (yych == '\n') goto yy134;
860 if (yych <= '\f') goto yy103; 1065 if (yych <= '\f') goto yy135;
861 goto yy102; 1066 goto yy134;
862 } else { 1067 } else {
863 if (yych <= '"') { 1068 if (yych <= '"') {
864 if (yych <= '!') goto yy103; 1069 if (yych <= '!') goto yy135;
865 goto yy107; 1070 goto yy139;
866 } else { 1071 } else {
867 if (yych != ')') goto yy103; 1072 if (yych != ')') goto yy135;
868 } 1073 }
869 } 1074 }
870 yyaccept = 1; 1075 yyaccept = 1;
871 yych = *(YYMARKER = ++YYCURSOR); 1076 yych = *(YYMARKER = ++YYCURSOR);
872 if (yybm[0+yych] & 64) { 1077 if (yybm[0+yych] & 64) {
873 goto yy103; 1078 goto yy135;
874 } 1079 }
875 if (yych <= '\r') goto yy106; 1080 if (yych <= '\r') goto yy138;
876 if (yych <= '"') goto yy107; 1081 if (yych <= '"') goto yy139;
877 goto yy108; 1082 goto yy140;
878 } 1083 }
879/* *********************************** */ 1084/* *********************************** */
880yyc_cond_op: 1085yyc_cond_op:
@@ -915,63 +1120,63 @@ yyc_cond_op:
915 }; 1120 };
916 yych = *YYCURSOR; 1121 yych = *YYCURSOR;
917 if (yybm[0+yych] & 128) { 1122 if (yybm[0+yych] & 128) {
918 goto yy116; 1123 goto yy148;
919 } 1124 }
920 if (yych <= ')') { 1125 if (yych <= ')') {
921 if (yych <= '\r') { 1126 if (yych <= '\r') {
922 if (yych <= 0x08) goto yy114; 1127 if (yych <= 0x08) goto yy146;
923 if (yych <= '\n') goto yy119; 1128 if (yych <= '\n') goto yy151;
924 if (yych >= '\r') goto yy121; 1129 if (yych >= '\r') goto yy153;
925 } else { 1130 } else {
926 if (yych == '&') { 1131 if (yych == '&') {
927 yyt1 = YYCURSOR; 1132 yyt1 = YYCURSOR;
928 goto yy122; 1133 goto yy154;
929 } 1134 }
930 if (yych >= ')') goto yy123; 1135 if (yych >= ')') goto yy155;
931 } 1136 }
932 } else { 1137 } else {
933 if (yych <= '=') { 1138 if (yych <= '=') {
934 if (yych <= ':') goto yy114; 1139 if (yych <= ':') goto yy146;
935 if (yych <= ';') goto yy125; 1140 if (yych <= ';') goto yy157;
936 if (yych <= '<') { 1141 if (yych <= '<') {
937 yyt1 = YYCURSOR; 1142 yyt1 = YYCURSOR;
938 goto yy127; 1143 goto yy159;
939 } 1144 }
940 yyt1 = YYCURSOR; 1145 yyt1 = YYCURSOR;
941 goto yy129; 1146 goto yy161;
942 } else { 1147 } else {
943 if (yych <= '>') { 1148 if (yych <= '>') {
944 yyt1 = YYCURSOR; 1149 yyt1 = YYCURSOR;
945 goto yy127; 1150 goto yy159;
946 } 1151 }
947 if (yych == '|') { 1152 if (yych == '|') {
948 yyt1 = YYCURSOR; 1153 yyt1 = YYCURSOR;
949 goto yy130; 1154 goto yy162;
950 } 1155 }
951 } 1156 }
952 } 1157 }
953yy114: 1158yy146:
954 ++YYCURSOR; 1159 ++YYCURSOR;
955yy115: 1160yy147:
956 { cs_log_error("Syntax error in condition on line %d", lineno); goto out; } 1161 { cs_log_error("Syntax error in condition on line %d", lineno); goto out; }
957yy116: 1162yy148:
958 yych = *++YYCURSOR; 1163 yych = *++YYCURSOR;
959 if (yybm[0+yych] & 128) { 1164 if (yybm[0+yych] & 128) {
960 goto yy116; 1165 goto yy148;
961 } 1166 }
962 { goto yyc_cond_op; } 1167 { goto yyc_cond_op; }
963yy119: 1168yy151:
964 ++YYCURSOR; 1169 ++YYCURSOR;
965 { lineno++; goto yyc_cond_op; } 1170 { lineno++; goto yyc_cond_op; }
966yy121: 1171yy153:
967 yych = *++YYCURSOR; 1172 yych = *++YYCURSOR;
968 if (yych == '\n') goto yy119; 1173 if (yych == '\n') goto yy151;
969 goto yy115; 1174 goto yy147;
970yy122: 1175yy154:
971 yych = *++YYCURSOR; 1176 yych = *++YYCURSOR;
972 if (yych == '&') goto yy131; 1177 if (yych == '&') goto yy163;
973 goto yy115; 1178 goto yy147;
974yy123: 1179yy155:
975 ++YYCURSOR; 1180 ++YYCURSOR;
976 { 1181 {
977 while (cond_op_i && sy_op_peek() != '(') { 1182 while (cond_op_i && sy_op_peek() != '(') {
@@ -983,7 +1188,7 @@ yy123:
983 cond_op_i--; 1188 cond_op_i--;
984 goto yyc_cond_op; 1189 goto yyc_cond_op;
985 } 1190 }
986yy125: 1191yy157:
987 ++YYCURSOR; 1192 ++YYCURSOR;
988 { 1193 {
989 while (cond_op_i) { 1194 while (cond_op_i) {
@@ -993,10 +1198,10 @@ yy125:
993 if (cond_res_i > 1) { cs_log_error("invalid condition on line %d", lineno); goto out; } 1198 if (cond_res_i > 1) { cs_log_error("invalid condition on line %d", lineno); goto out; }
994 goto yyc_init; 1199 goto yyc_init;
995 } 1200 }
996yy127: 1201yy159:
997 yych = *++YYCURSOR; 1202 yych = *++YYCURSOR;
998 if (yych == '=') goto yy131; 1203 if (yych == '=') goto yy163;
999yy128: 1204yy160:
1000 t1 = yyt1; 1205 t1 = yyt1;
1001 t2 = YYCURSOR; 1206 t2 = YYCURSOR;
1002 { 1207 {
@@ -1013,16 +1218,16 @@ yy128:
1013 sy_op_push(*t1); 1218 sy_op_push(*t1);
1014 goto yyc_cond; 1219 goto yyc_cond;
1015 } 1220 }
1016yy129: 1221yy161:
1017 yych = *++YYCURSOR; 1222 yych = *++YYCURSOR;
1018 if (yych == '=') goto yy131; 1223 if (yych == '=') goto yy163;
1019 goto yy115; 1224 goto yy147;
1020yy130: 1225yy162:
1021 yych = *++YYCURSOR; 1226 yych = *++YYCURSOR;
1022 if (yych != '|') goto yy115; 1227 if (yych != '|') goto yy147;
1023yy131: 1228yy163:
1024 ++YYCURSOR; 1229 ++YYCURSOR;
1025 goto yy128; 1230 goto yy160;
1026 } 1231 }
1027/* *********************************** */ 1232/* *********************************** */
1028yyc_rule: 1233yyc_rule:
@@ -1063,77 +1268,77 @@ yyc_rule:
1063 }; 1268 };
1064 yych = *YYCURSOR; 1269 yych = *YYCURSOR;
1065 if (yybm[0+yych] & 8) { 1270 if (yybm[0+yych] & 8) {
1066 goto yy136; 1271 goto yy168;
1067 } 1272 }
1068 if (yych <= '\r') { 1273 if (yych <= '\r') {
1069 if (yych <= 0x08) goto yy134; 1274 if (yych <= 0x08) goto yy166;
1070 if (yych <= '\n') goto yy139; 1275 if (yych <= '\n') goto yy171;
1071 if (yych >= '\r') goto yy140; 1276 if (yych >= '\r') goto yy172;
1072 } else { 1277 } else {
1073 if (yych <= '.') { 1278 if (yych <= '.') {
1074 if (yych >= '.') goto yy141; 1279 if (yych >= '.') goto yy173;
1075 } else { 1280 } else {
1076 if (yych == ';') goto yy142; 1281 if (yych == ';') goto yy174;
1077 } 1282 }
1078 } 1283 }
1079yy134: 1284yy166:
1080 ++YYCURSOR; 1285 ++YYCURSOR;
1081yy135: 1286yy167:
1082 { goto end_of_rule; } 1287 { goto end_of_rule; }
1083yy136: 1288yy168:
1084 yych = *++YYCURSOR; 1289 yych = *++YYCURSOR;
1085 if (yybm[0+yych] & 8) { 1290 if (yybm[0+yych] & 8) {
1086 goto yy136; 1291 goto yy168;
1087 } 1292 }
1088 { goto yyc_rule; } 1293 { goto yyc_rule; }
1089yy139: 1294yy171:
1090 yyaccept = 0; 1295 yyaccept = 0;
1091 yych = *(YYMARKER = ++YYCURSOR); 1296 yych = *(YYMARKER = ++YYCURSOR);
1092 if (yych <= '\r') { 1297 if (yych <= '\r') {
1093 if (yych <= 0x08) goto yy135; 1298 if (yych <= 0x08) goto yy167;
1094 if (yych <= '\n') { 1299 if (yych <= '\n') {
1095 yyt1 = YYCURSOR; 1300 yyt1 = YYCURSOR;
1096 goto yy144; 1301 goto yy176;
1097 } 1302 }
1098 if (yych <= '\f') goto yy135; 1303 if (yych <= '\f') goto yy167;
1099 yyt1 = YYCURSOR; 1304 yyt1 = YYCURSOR;
1100 goto yy147; 1305 goto yy179;
1101 } else { 1306 } else {
1102 if (yych <= ' ') { 1307 if (yych <= ' ') {
1103 if (yych <= 0x1F) goto yy135; 1308 if (yych <= 0x1F) goto yy167;
1104 yyt1 = YYCURSOR; 1309 yyt1 = YYCURSOR;
1105 goto yy144; 1310 goto yy176;
1106 } else { 1311 } else {
1107 if (yych == '.') { 1312 if (yych == '.') {
1108 yyt1 = YYCURSOR; 1313 yyt1 = YYCURSOR;
1109 goto yy148; 1314 goto yy180;
1110 } 1315 }
1111 goto yy135; 1316 goto yy167;
1112 } 1317 }
1113 } 1318 }
1114yy140: 1319yy172:
1115 yyaccept = 0; 1320 yyaccept = 0;
1116 yych = *(YYMARKER = ++YYCURSOR); 1321 yych = *(YYMARKER = ++YYCURSOR);
1117 if (yych == '\n') goto yy150; 1322 if (yych == '\n') goto yy182;
1118 goto yy135; 1323 goto yy167;
1119yy141: 1324yy173:
1120 yych = *++YYCURSOR; 1325 yych = *++YYCURSOR;
1121 if (yych <= '^') { 1326 if (yych <= '^') {
1122 if (yych <= '@') goto yy135; 1327 if (yych <= '@') goto yy167;
1123 if (yych <= 'Z') { 1328 if (yych <= 'Z') {
1124 yyt1 = YYCURSOR; 1329 yyt1 = YYCURSOR;
1125 goto yy151; 1330 goto yy183;
1126 } 1331 }
1127 goto yy135; 1332 goto yy167;
1128 } else { 1333 } else {
1129 if (yych == '`') goto yy135; 1334 if (yych == '`') goto yy167;
1130 if (yych <= 'z') { 1335 if (yych <= 'z') {
1131 yyt1 = YYCURSOR; 1336 yyt1 = YYCURSOR;
1132 goto yy151; 1337 goto yy183;
1133 } 1338 }
1134 goto yy135; 1339 goto yy167;
1135 } 1340 }
1136yy142: 1341yy174:
1137 ++YYCURSOR; 1342 ++YYCURSOR;
1138 { 1343 {
1139 end_of_rule: 1344 end_of_rule:
@@ -1144,71 +1349,71 @@ yy142:
1144 } 1349 }
1145 goto yyc_init; 1350 goto yyc_init;
1146 } 1351 }
1147yy144: 1352yy176:
1148 yych = *++YYCURSOR; 1353 yych = *++YYCURSOR;
1149 if (yybm[0+yych] & 16) { 1354 if (yybm[0+yych] & 16) {
1150 goto yy144; 1355 goto yy176;
1151 } 1356 }
1152 if (yych == '\r') goto yy147; 1357 if (yych == '\r') goto yy179;
1153 if (yych == '.') goto yy148; 1358 if (yych == '.') goto yy180;
1154yy146: 1359yy178:
1155 YYCURSOR = YYMARKER; 1360 YYCURSOR = YYMARKER;
1156 if (yyaccept <= 1) { 1361 if (yyaccept <= 1) {
1157 if (yyaccept == 0) { 1362 if (yyaccept == 0) {
1158 goto yy135; 1363 goto yy167;
1159 } else { 1364 } else {
1160 yyt3 = yyt4 = NULL; 1365 yyt3 = yyt4 = NULL;
1161 yyt2 = YYCURSOR; 1366 yyt2 = YYCURSOR;
1162 goto yy153; 1367 goto yy185;
1163 } 1368 }
1164 } else { 1369 } else {
1165 goto yy153; 1370 goto yy185;
1166 } 1371 }
1167yy147: 1372yy179:
1168 yych = *++YYCURSOR; 1373 yych = *++YYCURSOR;
1169 if (yych == '\n') goto yy144; 1374 if (yych == '\n') goto yy176;
1170 goto yy146; 1375 goto yy178;
1171yy148: 1376yy180:
1172 ++YYCURSOR; 1377 ++YYCURSOR;
1173 YYCURSOR = yyt1; 1378 YYCURSOR = yyt1;
1174 { lineno++; goto yyc_rule; } 1379 { lineno++; goto yyc_rule; }
1175yy150: 1380yy182:
1176 yych = *++YYCURSOR; 1381 yych = *++YYCURSOR;
1177 if (yych <= '\r') { 1382 if (yych <= '\r') {
1178 if (yych <= 0x08) goto yy146; 1383 if (yych <= 0x08) goto yy178;
1179 if (yych <= '\n') { 1384 if (yych <= '\n') {
1180 yyt1 = YYCURSOR; 1385 yyt1 = YYCURSOR;
1181 goto yy144; 1386 goto yy176;
1182 } 1387 }
1183 if (yych <= '\f') goto yy146; 1388 if (yych <= '\f') goto yy178;
1184 yyt1 = YYCURSOR; 1389 yyt1 = YYCURSOR;
1185 goto yy147; 1390 goto yy179;
1186 } else { 1391 } else {
1187 if (yych <= ' ') { 1392 if (yych <= ' ') {
1188 if (yych <= 0x1F) goto yy146; 1393 if (yych <= 0x1F) goto yy178;
1189 yyt1 = YYCURSOR; 1394 yyt1 = YYCURSOR;
1190 goto yy144; 1395 goto yy176;
1191 } else { 1396 } else {
1192 if (yych == '.') { 1397 if (yych == '.') {
1193 yyt1 = YYCURSOR; 1398 yyt1 = YYCURSOR;
1194 goto yy148; 1399 goto yy180;
1195 } 1400 }
1196 goto yy146; 1401 goto yy178;
1197 } 1402 }
1198 } 1403 }
1199yy151: 1404yy183:
1200 yyaccept = 1; 1405 yyaccept = 1;
1201 yych = *(YYMARKER = ++YYCURSOR); 1406 yych = *(YYMARKER = ++YYCURSOR);
1202 if (yybm[0+yych] & 32) { 1407 if (yybm[0+yych] & 32) {
1203 goto yy151; 1408 goto yy183;
1204 } 1409 }
1205 if (yych == '(') { 1410 if (yych == '(') {
1206 yyt2 = YYCURSOR; 1411 yyt2 = YYCURSOR;
1207 goto yy154; 1412 goto yy186;
1208 } 1413 }
1209 yyt3 = yyt4 = NULL; 1414 yyt3 = yyt4 = NULL;
1210 yyt2 = YYCURSOR; 1415 yyt2 = YYCURSOR;
1211yy153: 1416yy185:
1212 t1 = yyt1; 1417 t1 = yyt1;
1213 t2 = yyt2; 1418 t2 = yyt2;
1214 t3 = yyt3; 1419 t3 = yyt3;
@@ -1243,110 +1448,110 @@ yy153:
1243 parsed_rule[kw_i++] = kw; 1448 parsed_rule[kw_i++] = kw;
1244 goto yyc_rule; 1449 goto yyc_rule;
1245 } 1450 }
1246yy154: 1451yy186:
1247 yych = *++YYCURSOR; 1452 yych = *++YYCURSOR;
1248 if (yych <= '@') { 1453 if (yych <= '@') {
1249 if (yych <= '"') { 1454 if (yych <= '"') {
1250 if (yych <= '!') goto yy146; 1455 if (yych <= '!') goto yy178;
1251 yyt3 = YYCURSOR; 1456 yyt3 = YYCURSOR;
1252 } else { 1457 } else {
1253 if (yych == ')') { 1458 if (yych == ')') {
1254 yyt3 = yyt4 = YYCURSOR; 1459 yyt3 = yyt4 = YYCURSOR;
1255 goto yy157; 1460 goto yy189;
1256 } 1461 }
1257 goto yy146; 1462 goto yy178;
1258 } 1463 }
1259 } else { 1464 } else {
1260 if (yych <= '_') { 1465 if (yych <= '_') {
1261 if (yych <= 'Z') { 1466 if (yych <= 'Z') {
1262 yyt3 = YYCURSOR; 1467 yyt3 = YYCURSOR;
1263 goto yy158; 1468 goto yy190;
1264 } 1469 }
1265 if (yych <= '^') goto yy146; 1470 if (yych <= '^') goto yy178;
1266 yyt3 = YYCURSOR; 1471 yyt3 = YYCURSOR;
1267 goto yy158; 1472 goto yy190;
1268 } else { 1473 } else {
1269 if (yych <= '`') goto yy146; 1474 if (yych <= '`') goto yy178;
1270 if (yych <= 'z') { 1475 if (yych <= 'z') {
1271 yyt3 = YYCURSOR; 1476 yyt3 = YYCURSOR;
1272 goto yy158; 1477 goto yy190;
1273 } 1478 }
1274 goto yy146; 1479 goto yy178;
1275 } 1480 }
1276 } 1481 }
1277yy155: 1482yy187:
1278 yych = *++YYCURSOR; 1483 yych = *++YYCURSOR;
1279 if (yybm[0+yych] & 64) { 1484 if (yybm[0+yych] & 64) {
1280 goto yy155; 1485 goto yy187;
1281 } 1486 }
1282 if (yych <= '\r') goto yy146; 1487 if (yych <= '\r') goto yy178;
1283 if (yych <= '"') goto yy160; 1488 if (yych <= '"') goto yy192;
1284 goto yy161; 1489 goto yy193;
1285yy157: 1490yy189:
1286 ++YYCURSOR; 1491 ++YYCURSOR;
1287 goto yy153; 1492 goto yy185;
1288yy158: 1493yy190:
1289 yych = *++YYCURSOR; 1494 yych = *++YYCURSOR;
1290 if (yych <= '@') { 1495 if (yych <= '@') {
1291 if (yych <= ')') { 1496 if (yych <= ')') {
1292 if (yych <= '(') goto yy146; 1497 if (yych <= '(') goto yy178;
1293 yyt4 = YYCURSOR; 1498 yyt4 = YYCURSOR;
1294 goto yy157; 1499 goto yy189;
1295 } else { 1500 } else {
1296 if (yych <= '/') goto yy146; 1501 if (yych <= '/') goto yy178;
1297 if (yych <= '9') goto yy158; 1502 if (yych <= '9') goto yy190;
1298 goto yy146; 1503 goto yy178;
1299 } 1504 }
1300 } else { 1505 } else {
1301 if (yych <= '_') { 1506 if (yych <= '_') {
1302 if (yych <= 'Z') goto yy158; 1507 if (yych <= 'Z') goto yy190;
1303 if (yych <= '^') goto yy146; 1508 if (yych <= '^') goto yy178;
1304 goto yy158; 1509 goto yy190;
1305 } else { 1510 } else {
1306 if (yych <= '`') goto yy146; 1511 if (yych <= '`') goto yy178;
1307 if (yych <= 'z') goto yy158; 1512 if (yych <= 'z') goto yy190;
1308 goto yy146; 1513 goto yy178;
1309 } 1514 }
1310 } 1515 }
1311yy160: 1516yy192:
1312 yych = *++YYCURSOR; 1517 yych = *++YYCURSOR;
1313 if (yych == ')') { 1518 if (yych == ')') {
1314 yyt4 = YYCURSOR; 1519 yyt4 = YYCURSOR;
1315 goto yy157; 1520 goto yy189;
1316 } 1521 }
1317 goto yy146; 1522 goto yy178;
1318yy161: 1523yy193:
1319 yych = *++YYCURSOR; 1524 yych = *++YYCURSOR;
1320 if (yybm[0+yych] & 64) { 1525 if (yybm[0+yych] & 64) {
1321 goto yy155; 1526 goto yy187;
1322 } 1527 }
1323 if (yych <= '\r') goto yy146; 1528 if (yych <= '\r') goto yy178;
1324 if (yych >= '#') goto yy161; 1529 if (yych >= '#') goto yy193;
1325 yych = *++YYCURSOR; 1530 yych = *++YYCURSOR;
1326 if (yybm[0+yych] & 128) { 1531 if (yybm[0+yych] & 128) {
1327 goto yy161; 1532 goto yy193;
1328 } 1533 }
1329 if (yych <= '\r') { 1534 if (yych <= '\r') {
1330 if (yych == '\n') goto yy146; 1535 if (yych == '\n') goto yy178;
1331 if (yych <= '\f') goto yy155; 1536 if (yych <= '\f') goto yy187;
1332 goto yy146; 1537 goto yy178;
1333 } else { 1538 } else {
1334 if (yych <= '"') { 1539 if (yych <= '"') {
1335 if (yych <= '!') goto yy155; 1540 if (yych <= '!') goto yy187;
1336 goto yy160; 1541 goto yy192;
1337 } else { 1542 } else {
1338 if (yych != ')') goto yy155; 1543 if (yych != ')') goto yy187;
1339 yyt4 = YYCURSOR; 1544 yyt4 = YYCURSOR;
1340 } 1545 }
1341 } 1546 }
1342 yyaccept = 2; 1547 yyaccept = 2;
1343 yych = *(YYMARKER = ++YYCURSOR); 1548 yych = *(YYMARKER = ++YYCURSOR);
1344 if (yybm[0+yych] & 64) { 1549 if (yybm[0+yych] & 64) {
1345 goto yy155; 1550 goto yy187;
1346 } 1551 }
1347 if (yych <= '\r') goto yy153; 1552 if (yych <= '\r') goto yy185;
1348 if (yych <= '"') goto yy160; 1553 if (yych <= '"') goto yy192;
1349 goto yy161; 1554 goto yy193;
1350 } 1555 }
1351} 1556}
1352 1557
diff --git a/src/sp_config_scanner.re b/src/sp_config_scanner.re
index 063d332..b0ee5d5 100644
--- a/src/sp_config_scanner.re
+++ b/src/sp_config_scanner.re
@@ -4,6 +4,8 @@
4 4
5#define cs_log_error(fmt, ...) sp_log_err("config", fmt, ##__VA_ARGS__) 5#define cs_log_error(fmt, ...) sp_log_err("config", fmt, ##__VA_ARGS__)
6#define cs_log_info(fmt, ...) sp_log_msg("config", SP_LOG_INFO, fmt, ##__VA_ARGS__) 6#define cs_log_info(fmt, ...) sp_log_msg("config", SP_LOG_INFO, fmt, ##__VA_ARGS__)
7#define cs_log_warning(fmt, ...) sp_log_warn("config", fmt, ##__VA_ARGS__)
8
7 9
8zend_string *sp_get_arg_string(sp_parsed_keyword *kw) { 10zend_string *sp_get_arg_string(sp_parsed_keyword *kw) {
9 if (!kw || !kw->arg) { 11 if (!kw || !kw->arg) {
@@ -126,6 +128,12 @@ static int sy_apply_op(char op, int a, int b) {
126 int res = sy_apply_op(op, a, b); \ 128 int res = sy_apply_op(op, a, b); \
127 sy_res_push(res); 129 sy_res_push(res);
128 130
131#define TMPSTR(tmpstr, t2, t1) \
132 char tmpstr[1024]; \
133 size_t tmplen = MIN(t2-t1-2, 1023); \
134 strncpy(tmpstr, t1+1, tmplen); \
135 tmpstr[tmplen] = 0;
136
129 137
130zend_result sp_config_scan(char *data, zend_result (*process_rule)(sp_parsed_keyword*)) 138zend_result sp_config_scan(char *data, zend_result (*process_rule)(sp_parsed_keyword*))
131{ 139{
@@ -186,14 +194,22 @@ zend_result sp_config_scan(char *data, zend_result (*process_rule)(sp_parsed_key
186 } 194 }
187 <init> "@condition" ws+ { goto yyc_cond; } 195 <init> "@condition" ws+ { goto yyc_cond; }
188 <init> "@end_condition" ws* ";" { cond_res[0] = 1; goto yyc_init; } 196 <init> "@end_condition" ws* ";" { cond_res[0] = 1; goto yyc_init; }
189 <init> "@log" ws+ @t1 string? @t2 { 197 <init> ( "@log" | "@info" ) ws+ @t1 string @t2 {
190 char tmpstr[1024]; 198 TMPSTR(tmpstr, t2, t1);
191 size_t tmplen = MIN(t2-t1-2, 1023);
192 strncpy(tmpstr, t1+1, tmplen);
193 tmpstr[tmplen] = 0;
194 cs_log_info("[line %d]: %s", lineno, tmpstr); 199 cs_log_info("[line %d]: %s", lineno, tmpstr);
195 goto yyc_init; 200 goto yyc_init;
196 } 201 }
202 <init> ( "@warn" | "@warning" ) ws+ @t1 string @t2 {
203 TMPSTR(tmpstr, t2, t1);
204 cs_log_warning("[line %d]: %s", lineno, tmpstr);
205 goto yyc_init;
206 }
207 <init> ( "@err" | "@error" ) ws+ @t1 string @t2 {
208 TMPSTR(tmpstr, t2, t1);
209 cs_log_error("[line %d]: %s", lineno, tmpstr);
210 goto out;
211 }
212
197 213
198 <cond> ws+ { goto yyc_cond; } 214 <cond> ws+ { goto yyc_cond; }
199 <cond> nl { lineno++; goto yyc_cond; } 215 <cond> nl { lineno++; goto yyc_cond; }