… | |
… | |
633 | |
633 | |
634 | void object_thawer::get_ml (keyword kend, shstr &sh) |
634 | void object_thawer::get_ml (keyword kend, shstr &sh) |
635 | { |
635 | { |
636 | char kw[128]; |
636 | char kw[128]; |
637 | |
637 | |
638 | // multi-line strings are delimited by "\nendXXX\n" |
638 | int klen = keyword_len [kend]; |
|
|
639 | |
639 | kw [0] = '\n'; |
640 | kw [0] = '\n'; |
640 | strcpy (kw + 1, keyword_str [kend]); |
641 | memcpy (kw + 1, keyword_str [kend], klen); |
|
|
642 | kw [klen + 1] = '\n'; |
|
|
643 | kw [klen + 2] = 0; |
641 | |
644 | |
642 | char *end = strstr (line, kw); |
645 | // first test for completely empty msg... "endXXX\n" |
643 | |
646 | if (!strncmp (line, kw + 1, klen + 1)) |
644 | if (!end) |
|
|
645 | { |
647 | { |
646 | sh = 0; |
648 | sh = 0; |
|
|
649 | |
|
|
650 | line += klen + 1; |
|
|
651 | |
647 | return; |
652 | return; |
648 | } |
653 | } |
|
|
654 | else |
|
|
655 | { |
|
|
656 | // multi-line strings are delimited by "\nendXXX\n" or "endXXX\n" (NULL) |
649 | |
657 | |
|
|
658 | char *end = strstr (line, kw); |
|
|
659 | |
|
|
660 | if (!end) |
|
|
661 | { |
|
|
662 | sh = 0; |
|
|
663 | return; |
|
|
664 | } |
|
|
665 | |
650 | *end = 0; |
666 | *end = 0; |
651 | sh = line; |
667 | sh = line; |
652 | |
668 | |
653 | line = end + keyword_len [kend] + 1; |
669 | line = end + keyword_len [kend] + 1; |
654 | |
670 | |
655 | while (*line++ != '\n') |
671 | while (*line++ != '\n') |
|
|
672 | ; |
656 | ; |
673 | } |
657 | } |
674 | } |
658 | |
675 | |
659 | sint32 object_thawer::get_sint32 () const |
676 | sint32 object_thawer::get_sint32 () const |
660 | { |
677 | { |
661 | char *p = last_value; |
678 | char *p = last_value; |