| 613 | } |
| 614 | |
| 615 | static bool parse_values(const TCHAR *ins, TCHAR *out) |
| 616 | { |
| 617 | int ident = 0; |
| 618 | TCHAR tmp; |
| 619 | TCHAR inbuf[IOBUFFERS]; |
| 620 | int op; |
| 621 | |
| 622 | _tcscpy (inbuf, ins); |
| 623 | TCHAR *in = inbuf; |
| 624 | TCHAR *p = out; |
| 625 | op = 0; |
| 626 | if (in[0] == '-' || in[0] == '+') { |
| 627 | *p++ = '0'; |
| 628 | } |
| 629 | while (*in) { |
| 630 | TCHAR *instart = in; |
| 631 | if (!_tcsncmp(in, _T("true"), 4) && is_separator(in[4])) { |
| 632 | in[0] = '1'; |
| 633 | in[1] = ' '; |
| 634 | in[2] = ' '; |
| 635 | in[3] = ' '; |
| 636 | } else if (!_tcsncmp(in, _T("false"), 5) && is_separator(in[5])) { |
| 637 | in[0] = '0'; |
| 638 | in[1] = ' '; |
| 639 | in[2] = ' '; |
| 640 | in[3] = ' '; |
| 641 | in[4] = ' '; |
| 642 | } else if (!_tcsncmp(in, _T("rl("), 3)) { |
| 643 | in[0] = (TCHAR)0xf2; |
| 644 | in[1] = ' '; |
| 645 | } else if (!_tcsncmp(in, _T("rw("), 3)) { |
| 646 | in[0] = (TCHAR)0xf1; |
| 647 | in[1] = ' '; |
| 648 | } else if (!_tcsncmp(in, _T("rb("), 3)) { |
| 649 | in[0] = (TCHAR)0xf0; |
| 650 | in[1] = ' '; |
| 651 | } else if (in[0] == '>' && in[1] == '>') { |
| 652 | in[0] = (TCHAR)('>' | 0x80); |
| 653 | in[1] = ' '; |
| 654 | } else if (in[0] == '<' && in[1] == '<') { |
| 655 | in[0] = (TCHAR)('<' | 0x80); |
| 656 | in[1] = ' '; |
| 657 | } else if (in[0] == '"' || in[0] == '\'') { |
| 658 | TCHAR *quoted = in; |
| 659 | TCHAR quotec = *in; |
| 660 | *in++ = 0; |
| 661 | if (ident >= MAX_VALUES) |
| 662 | return false; |
| 663 | *p++ = ident + 'a'; |
| 664 | while (*in != 0 && *in != quotec) { |
| 665 | in++; |
| 666 | } |
| 667 | if (*in != quotec) { |
| 668 | return false; |
| 669 | } |
| 670 | *in = 0; |
| 671 | parsedvaluess[ident++] = my_strdup(quoted + 1); |
| 672 | while (quoted <= in) { |
no test coverage detected