diff options
-rw-r--r-- | e-util/e-util.c | 19 | ||||
-rw-r--r-- | e-util/e-util.h | 6 |
2 files changed, 20 insertions, 5 deletions
diff --git a/e-util/e-util.c b/e-util/e-util.c index 9a0929c865..6965bff9ee 100644 --- a/e-util/e-util.c +++ b/e-util/e-util.c @@ -500,7 +500,7 @@ e_strsplit (const gchar *string, return str_array; } -gchar * +const gchar * e_strstrcase (const gchar *haystack, const gchar *needle) { /* find the needle in the haystack neglecting case */ @@ -515,11 +515,24 @@ e_strstrcase (const gchar *haystack, const gchar *needle) return NULL; if (len == 0) - return (char *)haystack; + return haystack; - for (ptr = (char *)haystack; *(ptr + len - 1) != '\0'; ptr++) + for (ptr = haystack; *(ptr + len - 1) != '\0'; ptr++) if (!g_strncasecmp(ptr, needle, len)) return ptr; return NULL; } + +void +e_str_make_safe (gchar *string) +{ + gchar *p; + + g_return_if_fail (string != NULL); + + for (p = string; *p; p++) { + if (!isprint ((unsigned char)*p) || strchr (" /'\"`&();|<>${}!", *p)) + *p = '_'; + } +} diff --git a/e-util/e-util.h b/e-util/e-util.h index 7f61295d9a..37dcf3daec 100644 --- a/e-util/e-util.h +++ b/e-util/e-util.h @@ -48,8 +48,10 @@ gchar **e_strsplit (const gchar *string, const gchar *delimiter, gint max_tokens); -gchar *e_strstrcase (const gchar *haystack, - const gchar *needle); +const gchar *e_strstrcase (const gchar *haystack, + const gchar *needle); + +void e_str_make_safe (gchar *string); void e_marshal_INT__INT_INT_POINTER (GtkObject * object, GtkSignalFunc func, |