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