Enlightenment CVS committal

Author  : rephorm
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore


Modified Files:
        Ecore_Data.h Makefile.am ecore_str.c 
Added Files:
        ecore_strbuf.c 


Log Message:

add ecore_strlcat for symmetry
add ecore_strbuf, an auto-expanding string buffer for building long strings 
whose length isn't easily determinable beforehand. for now just supports append.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/Ecore_Data.h,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- Ecore_Data.h        12 Feb 2007 22:47:46 -0000      1.33
+++ Ecore_Data.h        16 Feb 2007 23:49:55 -0000      1.34
@@ -60,6 +60,9 @@
    
    typedef struct _ecore_list_node Ecore_List_Node;
 # define ECORE_LIST_NODE(node) ((Ecore_List_Node *)node)
+
+   typedef struct _ecore_strbuf Ecore_Strbuf;
+# define ECORE_STRBUF(buf) ((Ecore_Strbuf *)buf)
    
    struct _ecore_list_node {
       void *data;
@@ -475,6 +478,14 @@
    
    /* Add a function to free the data stored in nodes */
    EAPI int ecore_tree_set_free_cb(Ecore_Tree * tree, Ecore_Free_Cb free_func);
+
+
+Ecore_Strbuf * ecore_strbuf_new(void);
+Ecore_Strbuf * ecore_strbuf_new(void);
+void ecore_strbuf_free(Ecore_Strbuf *buf);
+void ecore_strbuf_append(Ecore_Strbuf *buf, const char *str);
+void ecore_strbuf_append_char(Ecore_Strbuf *buf, char c);
+const char * ecore_strbuf_string_get(Ecore_Strbuf *buf);
 
 #ifdef __cplusplus
 }
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/Makefile.am,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- Makefile.am 10 Jan 2007 11:28:41 -0000      1.10
+++ Makefile.am 16 Feb 2007 23:49:55 -0000      1.11
@@ -25,6 +25,7 @@
 ecore_sheap.c \
 ecore_signal.c \
 ecore_str.c \
+ecore_strbuf.c \
 ecore_strings.c \
 ecore_time.c \
 ecore_timer.c \
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_str.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ecore_str.c 27 Jan 2007 03:51:05 -0000      1.3
+++ ecore_str.c 16 Feb 2007 23:49:55 -0000      1.4
@@ -60,6 +60,42 @@
 #endif
 }
 
+/*
+ * Appends src to string dst of size siz (unlike strncat, siz is the
+ * full size of dst, not space left).  At most siz-1 characters
+ * will be copied.  Always NUL terminates (unless siz <= strlen(dst)).
+ * Returns strlen(src) + MIN(siz, strlen(initial dst)).
+ * If retval >= siz, truncation occurred.
+ */
+size_t
+strlcat(char *dst, const char *src, size_t siz)
+{
+        char *d = dst;
+        const char *s = src;
+        size_t n = siz;
+        size_t dlen;
+
+        /* Find the end of dst and adjust bytes left but don't go past end */
+        while (n-- != 0 && *d != '\0')
+                d++;
+        dlen = d - dst;
+        n = siz - dlen;
+
+        if (n == 0)
+                return(dlen + strlen(s));
+        while (*s != '\0') {
+                if (n != 1) {
+                        *d++ = *s;
+                        n--;
+                }
+                s++;
+        }
+        *d = '\0';
+
+        return(dlen + (s - src));        /* count does not include NUL */
+}
+
+
 int
 ecore_str_has_prefix(const char *str, const char *prefix)
 {



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to