From 5fcc71581abdf8839d10786d7ac437cc5b0bf4c5 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sat, 18 Oct 2014 17:14:12 -0500 Subject: Factor out printf-style escape parsing logic from echo.c. --- lib/lib.c | 8 ++++++++ lib/lib.h | 1 + 2 files changed, 9 insertions(+) (limited to 'lib') diff --git a/lib/lib.c b/lib/lib.c index 19d28d2b..dc2de121 100644 --- a/lib/lib.c +++ b/lib/lib.c @@ -283,6 +283,14 @@ int stridx(char *haystack, char needle) return off-haystack; } +int unescape(char c) +{ + char *from = "\\abefnrtv", *to = "\\\a\b\033\f\n\r\t\v"; + int idx = stridx(from, c); + + return (idx == -1) ? 0 : to[idx]; +} + // If *a starts with b, advance *a past it and return 1, else return 0; int strstart(char **a, char *b) { diff --git a/lib/lib.h b/lib/lib.h index 887c1d57..49b02bb5 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -152,6 +152,7 @@ long atolx(char *c); long atolx_range(char *numstr, long low, long high); int numlen(long l); int stridx(char *haystack, char needle); +int unescape(char c); int strstart(char **a, char *b); off_t fdlength(int fd); void loopfiles_rw(char **argv, int flags, int permissions, int failok, -- cgit v1.2.3