Mercurial > dovecot > core-2.2
diff src/lib/strescape.c @ 9516:aad42b172e1a HEAD
Added str_tabunescape().
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 23 Jun 2009 17:31:08 -0400 |
parents | 5a6fe52a0cfc |
children | 615eef3139c2 |
line wrap: on
line diff
--- a/src/lib/strescape.c Tue Jun 23 17:30:42 2009 -0400 +++ b/src/lib/strescape.c Tue Jun 23 17:31:08 2009 -0400 @@ -161,3 +161,45 @@ start = i; } } + +char *str_tabunescape(char *str) +{ + /* @UNSAFE */ + char *dest, *start = str; + + while (*str != '\001') { + if (*str == '\0') + return start; + str++; + } + + for (dest = str; *str != '\0'; str++) { + if (*str != '\001') + *dest++ = *str; + else { + str++; + if (*str == '\0') + break; + switch (*str) { + case '1': + *dest++ = '\001'; + break; + case 't': + *dest++ = '\t'; + break; + case 'r': + *dest++ = '\r'; + break; + case 'n': + *dest++ = '\n'; + break; + default: + *dest++ = *str; + break; + } + } + } + + *dest = '\0'; + return start; +}