diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -1,4 +1,4 @@ -/* $Id: util.c,v 1.1 2009-01-18 17:20:52 nicm Exp $ */ +/* $Id: util.c,v 1.2 2009-04-29 22:25:20 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net> @@ -50,3 +50,23 @@ section_string(char *buf, size_t len, size_t sectoff, size_t sectlen) (int) (last - first), buf + first, last == len ? "" : "..."); return (s); } + +/* Clean string of invisible characters. */ +void +clean_string(const char *in, char *buf, size_t len) +{ + const u_char *cp; + size_t off; + + off = 0; + for (cp = in; *cp != '\0'; cp++) { + if (off >= len) + break; + if (*cp >= 0x20 && *cp <= 0x7f) + buf[off++] = *cp; + else + off += xsnprintf(buf + off, len - off, "\\%03hho", *cp); + } + if (off < len) + buf[off] = '\0'; +} |