From dc9b377f1f754ceba99022cb98daa17ab81f9cf8 Mon Sep 17 00:00:00 2001 From: englebass Date: Sat, 6 Feb 2010 21:42:51 +0000 Subject: [PATCH] Add eina_str_escape git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@45949 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/include/eina_str.h | 2 ++ src/lib/eina_str.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/include/eina_str.h b/src/include/eina_str.h index d2f2a4b..988843a 100644 --- a/src/include/eina_str.h +++ b/src/include/eina_str.h @@ -27,6 +27,8 @@ EAPI size_t eina_str_join_len(char *dst, size_t size, char sep, const char *a, s EAPI char *eina_str_convert(const char *enc_from, const char *enc_to, const char *text); +EAPI char *eina_str_escape(const char *str); + /** * @brief Join two strings of known length. diff --git a/src/lib/eina_str.c b/src/lib/eina_str.c index 415d513..f3e9595 100644 --- a/src/lib/eina_str.c +++ b/src/lib/eina_str.c @@ -421,3 +421,31 @@ eina_str_convert(const char *enc_from, const char *enc_to, const char *text) return NULL; #endif } + +/** + * @brief Put a \ before and Space( ), \ or ' in a string. + * + * @param str the string to escape + * + * A newly allocated string is returned. + */ +EAPI char * +eina_str_escape(const char *str) +{ + char *s2, *d; + const char *s; + + s2 = malloc((strlen(str) * 2) + 1); + if (!s2) return NULL; + for (s = str, d = s2; *s != 0; s++, d++) + { + if ((*s == ' ') || (*s == '\\') || (*s == '\'')) + { + *d = '\\'; + d++; + } + *d = *s; + } + *d = 0; + return s2; +} -- 2.7.4