| 623 | //========================================================================== |
| 624 | |
| 625 | int strbin (char *str) |
| 626 | { |
| 627 | char *start = str; |
| 628 | char *p = str, c; |
| 629 | int i; |
| 630 | |
| 631 | while ( (c = *p++) ) { |
| 632 | if (c != '\\') { |
| 633 | *str++ = c; |
| 634 | } else if (*p != 0) { |
| 635 | switch (*p) { |
| 636 | case 'a': |
| 637 | *str++ = '\a'; |
| 638 | break; |
| 639 | case 'b': |
| 640 | *str++ = '\b'; |
| 641 | break; |
| 642 | case 'c': |
| 643 | *str++ = '\034'; // TEXTCOLOR_ESCAPE |
| 644 | break; |
| 645 | case 'f': |
| 646 | *str++ = '\f'; |
| 647 | break; |
| 648 | case 'n': |
| 649 | *str++ = '\n'; |
| 650 | break; |
| 651 | case 't': |
| 652 | *str++ = '\t'; |
| 653 | break; |
| 654 | case 'r': |
| 655 | *str++ = '\r'; |
| 656 | break; |
| 657 | case 'v': |
| 658 | *str++ = '\v'; |
| 659 | break; |
| 660 | case '?': |
| 661 | *str++ = '\?'; |
| 662 | break; |
| 663 | case '\n': |
| 664 | break; |
| 665 | case 'x': |
| 666 | case 'X': |
| 667 | c = 0; |
| 668 | for (i = 0; i < 2; i++) |
| 669 | { |
| 670 | p++; |
| 671 | if (*p >= '0' && *p <= '9') |
| 672 | c = (c << 4) + *p-'0'; |
| 673 | else if (*p >= 'a' && *p <= 'f') |
| 674 | c = (c << 4) + 10 + *p-'a'; |
| 675 | else if (*p >= 'A' && *p <= 'F') |
| 676 | c = (c << 4) + 10 + *p-'A'; |
| 677 | else |
| 678 | { |
| 679 | p--; |
| 680 | break; |
| 681 | } |
| 682 | } |