Add eina_str_escape
authorenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 6 Feb 2010 21:42:51 +0000 (21:42 +0000)
committerenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 6 Feb 2010 21:42:51 +0000 (21:42 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@45949 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/include/eina_str.h
src/lib/eina_str.c

index d2f2a4b..988843a 100644 (file)
@@ -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.
index 415d513..f3e9595 100644 (file)
@@ -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;
+}