diff options
Diffstat (limited to 'libs/pbd3/unescape.cc')
-rw-r--r-- | libs/pbd3/unescape.cc | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/libs/pbd3/unescape.cc b/libs/pbd3/unescape.cc deleted file mode 100644 index 2c79740e4a..0000000000 --- a/libs/pbd3/unescape.cc +++ /dev/null @@ -1,137 +0,0 @@ -#include <cstdlib> - -#include <pbd/unescape.h> - -void -unescape (char *str) - -{ - char *p; - bool escaped; - long offset; - char octal[4]; - int noct; - char hex[3]; - int nhex; - - escaped = false; - offset = 0; - octal[3] = '\0'; - hex[2] = '\0'; - - p = str; - - while (*p) { - if (!escaped) { - if (*p == '\\') { - escaped = true; - } else { - *(p-offset) = *p; - } - p++; - continue; - } - - switch (*p) { - case 'f': - offset++; - *(p-offset) = '\f'; - break; - case 'r': - offset++; - *(p-offset) = '\r'; - break; - - case 'v': - offset++; - *(p-offset) = '\v'; - break; - - case 'n': - offset++; - *(p-offset) = '\n'; - break; - - case 't': - offset++; - *(p-offset) = '\t'; - break; - - case 'b': - offset++; - *(p-offset) = '\b'; - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - noct = 0; - while (noct < 3 && - (*p >= '0' && *p <= '7')) { - octal[noct++] = *p; - offset++; - p++; - } - p--; - *(p-offset) = strtol (octal, 0, 8); - break; - - case 'x': - nhex = 0; - p++; - offset++; - - while (nhex < 2 && - ((*p >= '0' && *p <= '9') || - (*p >= 'a' && *p <= 'f') || - (*p >= 'A' && *p <= 'F'))) { - hex[nhex++] = *p; - offset++; - p++; - } - p--; - *(p-offset) = strtol (hex, 0, 16); - break; - - case '\\': - offset++; - *(p-offset) = '\\'; - break; - - case '"': - offset++; - *(p-offset) = '"'; - break; - - case '\'': - offset++; - *(p-offset) = '\''; - break; - - default: - *(p-offset) = *p; - } - - escaped = false; - p++; - } - - *(p-offset) = '\0'; -} - -#ifdef TEST -#include <cstdio> - -main (int argc, char *argv[]) - -{ - unescape (argv[1]); - printf ("%s\n", argv[1]); -} - -#endif |