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;
+}