aboutsummaryrefslogtreecommitdiffhomepage
path: root/util
diff options
context:
space:
mode:
authorGravatar Jani Nikula <jani@nikula.org>2014-02-03 21:51:43 +0200
committerGravatar David Bremner <david@tethera.net>2014-03-09 10:13:30 -0300
commit029790d3ff6e9fccfed2214efac777b8c438e318 (patch)
treeacbba0b5ea47f3641cce0d2db67c07e745148999 /util
parent998a8a95c3cd19950b78c50912345669952ba3eb (diff)
util: make sanitize string available in string util for reuse
No functional changes.
Diffstat (limited to 'util')
-rw-r--r--util/string-util.c22
-rw-r--r--util/string-util.h7
2 files changed, 29 insertions, 0 deletions
diff --git a/util/string-util.c b/util/string-util.c
index a5622d7a..9e2f728f 100644
--- a/util/string-util.c
+++ b/util/string-util.c
@@ -37,6 +37,28 @@ strtok_len (char *s, const char *delim, size_t *len)
return *len ? s : NULL;
}
+char *
+sanitize_string (const void *ctx, const char *str)
+{
+ char *out, *loop;
+
+ if (! str)
+ return NULL;
+
+ out = talloc_strdup (ctx, str);
+ if (! out)
+ return NULL;
+
+ for (loop = out; *loop; loop++) {
+ if (*loop == '\t' || *loop == '\n')
+ *loop = ' ';
+ else if ((unsigned char)(*loop) < 32)
+ *loop = '?';
+ }
+
+ return out;
+}
+
static int
is_unquoted_terminator (unsigned char c)
{
diff --git a/util/string-util.h b/util/string-util.h
index 0194607e..8a3ad19e 100644
--- a/util/string-util.h
+++ b/util/string-util.h
@@ -19,6 +19,13 @@
char *strtok_len (char *s, const char *delim, size_t *len);
+/* Return a talloced string with str sanitized.
+ *
+ * Whitespace characters (tabs and newlines) are replaced with spaces,
+ * non-printable characters with question marks.
+ */
+char *sanitize_string (const void *ctx, const char *str);
+
/* Construct a boolean term query with the specified prefix (e.g.,
* "id") and search term, quoting term as necessary. Specifically, if
* term contains any non-printable ASCII characters, non-ASCII