+1 too. These functions can be quite handy.

Angel Fradejas
Mediafusion Espana, S.A.
[EMAIL PROTECTED]
www.mediafusion.es
Tel. +34 91 252 32 00
Fax +34 91 572 27 08 


-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
nombre de Nisan Bloch
Enviado el: martes 4 de marzo de 2003 08:02
Para: [EMAIL PROTECTED]
Asunto: [PATCH] Octstr additions


Hi All

Some additions to octstr.[ch]

/*
  * Strip all occurence of char ch from start of Octstr
  */
void octstr_strip_char(Octstr *text, char ch);

/*
  * Check if ostr is numeric
  */
int octstr_isnum(Octstr *ostr1);

/*
  * Replace all occurences of needle with repl within haystack
  */

void octstr_replace(Octstr *haystack, Octstr *needle, Octstr *repl);

/*
  * Symbolise hexstr - 78797a becomes %78%79%7a
*/
int octstr_symbolize(Octstr *ostr);


Nisan


--- ../cvs/gateway/gwlib/octstr.h       Thu Sep  5 21:11:59 2002
+++ ../gateway-click/gwlib/octstr.h     Sat Mar  1 00:07:32 2003
@@ -582,4 +582,25 @@
   */
  int octstr_recode (Octstr *tocode, Octstr *fromcode, Octstr *orig);

+/*
+ * Strip all occurence of char ch from start of Octstr
+ */
+void octstr_strip_char(Octstr *text, char ch);
+
+/*
+ * Check if ostr is numeric
+ */
+int octstr_isnum(Octstr *ostr1);
+
+/*
+ * Replace all occurences of needle with repl within haystack
+ */
+
+void octstr_replace(Octstr *haystack, Octstr *needle, Octstr *repl);
+
+/*
+ * Symbolise hexstr - 78797a becomes %78%79%7a
+*/
+int octstr_symbolize(Octstr *ostr);
+
  #endif



--- ../cvs/gateway/gwlib/octstr.c       Wed Sep 25 16:05:51 2002
+++ ../gateway-click/gwlib/octstr.c     Sat Mar  1 00:07:59 2003
@@ -2181,3 +2181,81 @@

      return resultcode;
  }
+
+void octstr_strip_char(Octstr *text, char ch)
+{
+    int start = 0, end, len = 0;
+
+    seems_valid(text);
+    gw_assert(!text->immutable);
+
+    /* Remove char from the beginning of the text */
+    while ((ch == octstr_get_char(text, start)) &&
+           start <= octstr_len(text))
+        start ++;
+
+    if (start > 0)
+        octstr_delete(text, 0, start);
+
+
+    seems_valid(text);
+}
+
+int octstr_isnum(Octstr *ostr1)
+{
+
+
+    int start = 0;
+        char c;
+
+    seems_valid(ostr1);
+        while (start < octstr_len(ostr1))
+        {
+                c = octstr_get_char(ostr1, start);
+                if (!isdigit(c) && (c!='+'))
+                        return 0;
+                start++;
+        }
+        return 1;
+
+}
+
+
+void octstr_replace(Octstr *haystack, Octstr *needle, Octstr *repl)
+{
+        int p=-1;
+        long len;
+
+        len = octstr_len(needle);
+
+        while ((p = octstr_search(haystack,needle,p+1)) != -1)
+        {
+                octstr_delete(haystack, p, len);
+                octstr_insert(haystack, repl, p);
+        }
+}
+
+// symbolise string, return 0 if empty, -1 on error or 1 on success
+int octstr_symbolize(Octstr *ostr)
+{
+    long len, i;
+
+    seems_valid(ostr);
+    gw_assert(!ostr->immutable);
+
+    if (ostr->len == 0)
+        return 0;
+
+    /* Check if it's in the right format */
+    if (!octstr_check_range(ostr, 0, ostr->len, gw_isxdigit))
+        return -1;
+
+    len = ostr->len + (ostr->len/2);
+    octstr_grow(ostr, ostr->len * 2);
+
+    for (i=0;i<len;i+=3)
+                octstr_insert_data(ostr, i, "%", 1);
+
+    return (1);
+}
+


Reply via email to