Enlightenment CVS committal

Author  : mej
Project : eterm
Module  : libast

Dir     : eterm/libast/src


Modified Files:
        mbuff.c str.c ustr.c 


Log Message:
Tue Apr 25 10:19:10 2006                        Michael Jennings (mej)

Added sprintf() routines for string classes.

Began work on UTF-8/Unicode strings.
----------------------------------------------------------------------

===================================================================
RCS file: /cvs/e/eterm/libast/src/mbuff.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- mbuff.c     20 Apr 2006 21:44:40 -0000      1.3
+++ mbuff.c     25 Apr 2006 15:18:41 -0000      1.4
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char __attribute__((unused)) cvs_ident[] = "$Id: mbuff.c,v 1.3 
2006/04/20 21:44:40 mej Exp $";
+static const char __attribute__((unused)) cvs_ident[] = "$Id: mbuff.c,v 1.4 
2006/04/25 15:18:41 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -66,6 +66,7 @@
     (spif_func_t) spif_mbuff_rindex,
     (spif_func_t) spif_mbuff_splice,
     (spif_func_t) spif_mbuff_splice_from_ptr,
+    (spif_func_t) spif_mbuff_sprintf,
     (spif_func_t) spif_mbuff_subbuff,
     (spif_func_t) spif_mbuff_subbuff_to_ptr,
     (spif_func_t) spif_mbuff_trim
@@ -652,6 +653,38 @@
     memcpy(self->buff, tmp, newsize);
     FREE(tmp);
     return TRUE;
+}
+
+spif_bool_t
+spif_mbuff_sprintf(spif_mbuff_t self, spif_charptr_t format, ...)
+{
+    va_list ap;
+
+    ASSERT_RVAL(!SPIF_MBUFF_ISNULL(self), FALSE);
+    va_start(ap, format);
+    if (self->buff != SPIF_NULL_TYPE(byteptr)) {
+        spif_mbuff_done(self);
+    }
+    if (*format == 0) {
+        return TRUE;
+    } else if (*(format + 1) == 0) {
+        return spif_mbuff_init_from_ptr(self, format, 2);
+    } else {
+        int c;
+        char buff[2];
+
+        c = vsnprintf(buff, sizeof(buff), format, ap);
+        if (c <= 0) {
+            return TRUE;
+        } else {
+            c++;
+            self->len = self->size = c;
+            self->buff = SPIF_CAST(charptr) MALLOC(self->size);
+            c = vsnprintf(self->buff, self->size, format, ap);
+        }
+        return ((c >= 0) ? (TRUE) : (FALSE));
+    }
+    ASSERT_NOTREACHED_RVAL(FALSE);
 }
 
 spif_mbuff_t
===================================================================
RCS file: /cvs/e/eterm/libast/src/str.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- str.c       20 Apr 2006 21:44:40 -0000      1.33
+++ str.c       25 Apr 2006 15:18:41 -0000      1.34
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char __attribute__((unused)) cvs_ident[] = "$Id: str.c,v 1.33 
2006/04/20 21:44:40 mej Exp $";
+static const char __attribute__((unused)) cvs_ident[] = "$Id: str.c,v 1.34 
2006/04/25 15:18:41 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -75,6 +75,7 @@
     (spif_func_t) spif_str_rindex,
     (spif_func_t) spif_str_splice,
     (spif_func_t) spif_str_splice_from_ptr,
+    (spif_func_t) spif_str_sprintf,
     (spif_func_t) spif_str_substr,
     (spif_func_t) spif_str_substr_to_ptr,
     (spif_func_t) spif_str_to_float,
@@ -704,6 +705,38 @@
     memcpy(self->s, tmp, newsize);
     FREE(tmp);
     return TRUE;
+}
+
+spif_bool_t
+spif_str_sprintf(spif_str_t self, spif_charptr_t format, ...)
+{
+    va_list ap;
+
+    ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE);
+    va_start(ap, format);
+    if (self->s != SPIF_NULL_TYPE(charptr)) {
+        spif_str_done(self);
+    }
+    if (*format == 0) {
+        return TRUE;
+    } else if (*(format + 1) == 0) {
+        return spif_str_init_from_ptr(self, format);
+    } else {
+        int c;
+        char buff[2];
+
+        c = vsnprintf(buff, sizeof(buff), format, ap);
+        if (c <= 0) {
+            return TRUE;
+        } else {
+            self->len = c;
+            self->size = c + 1;
+            self->s = SPIF_CAST(charptr) MALLOC(self->size);
+            c = vsnprintf(self->s, c + 1, format, ap);
+        }
+        return ((c >= 0) ? (TRUE) : (FALSE));
+    }
+    ASSERT_NOTREACHED_RVAL(FALSE);
 }
 
 spif_str_t
===================================================================
RCS file: /cvs/e/eterm/libast/src/ustr.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ustr.c      20 Apr 2006 21:44:40 -0000      1.2
+++ ustr.c      25 Apr 2006 15:18:41 -0000      1.3
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char __attribute__((unused)) cvs_ident[] = "$Id: ustr.c,v 1.2 
2006/04/20 21:44:40 mej Exp $";
+static const char __attribute__((unused)) cvs_ident[] = "$Id: ustr.c,v 1.3 
2006/04/25 15:18:41 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -75,6 +75,7 @@
     (spif_func_t) spif_ustr_rindex,
     (spif_func_t) spif_ustr_splice,
     (spif_func_t) spif_ustr_splice_from_ptr,
+    (spif_func_t) spif_ustr_sprintf,
     (spif_func_t) spif_ustr_substr,
     (spif_func_t) spif_ustr_substr_to_ptr,
     (spif_func_t) spif_ustr_to_float,
@@ -704,6 +705,38 @@
     memcpy(self->s, tmp, newsize);
     FREE(tmp);
     return TRUE;
+}
+
+spif_bool_t
+spif_ustr_sprintf(spif_ustr_t self, spif_charptr_t format, ...)
+{
+    va_list ap;
+
+    ASSERT_RVAL(!SPIF_USTR_ISNULL(self), FALSE);
+    va_start(ap, format);
+    if (self->s != SPIF_NULL_TYPE(charptr)) {
+        spif_ustr_done(self);
+    }
+    if (*format == 0) {
+        return TRUE;
+    } else if (*(format + 1) == 0) {
+        return spif_ustr_init_from_ptr(self, format);
+    } else {
+        int c;
+        char buff[2];
+
+        c = vsnprintf(buff, sizeof(buff), format, ap);
+        if (c <= 0) {
+            return TRUE;
+        } else {
+            self->len = c;
+            self->size = c + 1;
+            self->s = SPIF_CAST(charptr) MALLOC(self->size);
+            c = vsnprintf(self->s, c + 1, format, ap);
+        }
+        return ((c >= 0) ? (TRUE) : (FALSE));
+    }
+    ASSERT_NOTREACHED_RVAL(FALSE);
 }
 
 spif_ustr_t




-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to