Enlightenment CVS committal Author : mej Project : eterm Module : libast
Dir : eterm/libast/src Modified Files: conf.c mem.c obj.c regexp.c socket.c str.c strings.c Log Message: Mon Nov 10 14:28:09 2003 Michael Jennings (mej) Added assertions/requirements for string member functions. Changed pointer printouts to %010p instead of %8p, since the latter didn't account for the possibility of a leading "0x". Fixed typos in hex_dump(). =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/conf.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- conf.c 17 Mar 2003 21:28:13 -0000 1.10 +++ conf.c 10 Nov 2003 19:29:19 -0000 1.11 @@ -31,7 +31,7 @@ * @author Michael Jennings <[EMAIL PROTECTED]> */ -static const char cvs_ident[] = "$Id: conf.c,v 1.10 2003/03/17 21:28:13 mej Exp $"; +static const char cvs_ident[] = "$Id: conf.c,v 1.11 2003/11/10 19:29:19 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -111,10 +111,13 @@ unsigned char conf_register_context(char *name, ctx_handler_t handler) { - - if (++ctx_idx == ctx_cnt) { - ctx_cnt *= 2; - context = (ctx_t *) REALLOC(context, sizeof(ctx_t) * ctx_cnt); + if (strcasecmp(name, "null")) { + if (++ctx_idx == ctx_cnt) { + ctx_cnt *= 2; + context = (ctx_t *) REALLOC(context, sizeof(ctx_t) * ctx_cnt); + } + } else { + FREE(context[0].name); } context[ctx_idx].name = STRDUP(name); context[ctx_idx].handler = handler; @@ -220,7 +223,7 @@ D_CONF(("var == \"%s\"\n", var)); for (v = conf_vars; v; v = v->next) { if (!strcmp(v->var, var)) { - D_CONF(("Found it at %8p: \"%s\" == \"%s\"\n", v, v->var, v->value)); + D_CONF(("Found it at %010p: \"%s\" == \"%s\"\n", v, v->var, v->value)); return (v->value); } } @@ -240,7 +243,7 @@ int n; n = strcmp(var, v->var); - D_CONF(("Comparing at %8p: \"%s\" -> \"%s\", n == %d\n", v, v->var, v->value, n)); + D_CONF(("Comparing at %010p: \"%s\" -> \"%s\", n == %d\n", v, v->var, v->value, n)); if (n == 0) { FREE(v->value); if (val) { =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/mem.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- mem.c 11 Apr 2003 21:10:34 -0000 1.10 +++ mem.c 10 Nov 2003 19:29:19 -0000 1.11 @@ -29,11 +29,11 @@ * This file contains the memory management subsystem. * * @author Michael Jennings <[EMAIL PROTECTED]> - * $Revision: 1.10 $ - * $Date: 2003/04/11 21:10:34 $ + * $Revision: 1.11 $ + * $Date: 2003/11/10 19:29:19 $ */ -static const char cvs_ident[] = "$Id: mem.c,v 1.10 2003/04/11 21:10:34 mej Exp $"; +static const char cvs_ident[] = "$Id: mem.c,v 1.11 2003/11/10 19:29:19 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -153,8 +153,8 @@ D_MEM(("Unable to reallocate pointer list -- %s\n", strerror(errno))); } p = memrec->ptrs + memrec->cnt - 1; - D_MEM(("Adding variable (%8p, %lu bytes) from %s:%lu.\n", ptr, size, filename, line)); - D_MEM(("Storing as pointer #%lu at %8p (from %8p).\n", memrec->cnt, p, memrec->ptrs)); + D_MEM(("Adding variable (%010p, %lu bytes) from %s:%lu.\n", ptr, size, filename, line)); + D_MEM(("Storing as pointer #%lu at %010p (from %010p).\n", memrec->cnt, p, memrec->ptrs)); p->ptr = ptr; p->size = size; strncpy(p->file, filename, LIBAST_FNAME_LEN); @@ -187,7 +187,7 @@ for (i = 0, p = memrec->ptrs; i < memrec->cnt; i++, p++) { if (p->ptr == ptr) { - D_MEM(("Found pointer #%lu stored at %8p (from %8p)\n", i + 1, p, memrec->ptrs)); + D_MEM(("Found pointer #%lu stored at %010p (from %010p)\n", i + 1, p, memrec->ptrs)); return p; } } @@ -219,11 +219,11 @@ ASSERT(memrec != NULL); if ((p = memrec_find_var(memrec, ptr)) == NULL) { - D_MEM(("ERROR: File %s, line %d attempted to free variable %s (%8p) which was not allocated with MALLOC/REALLOC\n", filename, line, + D_MEM(("ERROR: File %s, line %d attempted to free variable %s (%010p) which was not allocated with MALLOC/REALLOC\n", filename, line, var, ptr)); return; } - D_MEM(("Removing variable %s (%8p) of size %lu\n", var, ptr, p->size)); + D_MEM(("Removing variable %s (%010p) of size %lu\n", var, ptr, p->size)); if ((--memrec->cnt) > 0) { memmove(p, p + 1, sizeof(ptr_t) * (memrec->cnt - (p - memrec->ptrs))); memrec->ptrs = (ptr_t *) realloc(memrec->ptrs, sizeof(ptr_t) * memrec->cnt); @@ -257,11 +257,11 @@ ASSERT(memrec != NULL); if ((p = memrec_find_var(memrec, oldp)) == NULL) { - D_MEM(("ERROR: File %s, line %d attempted to realloc variable %s (%8p) which was not allocated with MALLOC/REALLOC\n", filename, + D_MEM(("ERROR: File %s, line %d attempted to realloc variable %s (%010p) which was not allocated with MALLOC/REALLOC\n", filename, line, var, oldp)); return; } - D_MEM(("Changing variable %s (%8p, %lu -> %8p, %lu)\n", var, oldp, p->size, newp, size)); + D_MEM(("Changing variable %s (%010p, %lu -> %010p, %lu)\n", var, oldp, p->size, newp, size)); p->ptr = newp; p->size = size; strncpy(p->file, filename, LIBAST_FNAME_LEN); @@ -301,7 +301,7 @@ /* First, dump the contents of the memrec->ptrs[] array. */ for (p = memrec->ptrs, j = 0; j < len; j += 8) { - fprintf(LIBAST_DEBUG_FD, "PTR: %07lu | %20s | %6lu | %8p | %06lu | %07x | ", (unsigned long) 0, "", (unsigned long) 0, + fprintf(LIBAST_DEBUG_FD, "PTR: %07lu | %20s | %6lu | %010p | %06lu | %07x | ", (unsigned long) 0, "", (unsigned long) 0, memrec->ptrs, (unsigned long) (sizeof(ptr_t) * memrec->cnt), (unsigned int) j); /* l is the number of characters we're going to output */ l = ((len - j < 8) ? (len - j) : (8)); @@ -326,7 +326,7 @@ /* Add this pointer's size to our total */ total += p->size; for (j = 0; j < p->size; j += 8) { - fprintf(LIBAST_DEBUG_FD, "PTR: %07lu | %20s | %6lu | %8p | %06lu | %07x | ", i + 1, NONULL(p->file), p->line, p->ptr, + fprintf(LIBAST_DEBUG_FD, "PTR: %07lu | %20s | %6lu | %010p | %06lu | %07x | ", i + 1, NONULL(p->file), p->line, p->ptr, (unsigned long) p->size, (unsigned int) j); /* l is the number of characters we're going to output */ l = ((p->size - j < 8) ? (p->size - j) : (8)); @@ -461,7 +461,7 @@ } #endif - D_MEM(("Variable %s (%8p -> %lu) at %s:%lu\n", var, ptr, (unsigned long) size, filename, line)); + D_MEM(("Variable %s (%010p -> %lu) at %s:%lu\n", var, ptr, (unsigned long) size, filename, line)); if (ptr == NULL) { temp = (void *) libast_malloc(__FILE__, __LINE__, size); } else { @@ -541,7 +541,7 @@ } #endif - D_MEM(("Variable %s (%8p) at %s:%lu\n", var, ptr, filename, line)); + D_MEM(("Variable %s (%010p) at %s:%lu\n", var, ptr, filename, line)); if (ptr) { if (DEBUG_LEVEL >= DEBUG_MEM) { memrec_rem_var(&malloc_rec, var, filename, line, ptr); @@ -575,7 +575,7 @@ register char *newstr; register size_t len; - D_MEM(("Variable %s (%8p) at %s:%lu\n", var, str, filename, line)); + D_MEM(("Variable %s (%010p) at %s:%lu\n", var, str, filename, line)); len = strlen(str) + 1; /* Copy NUL byte also */ newstr = (char *) libast_malloc(filename, line, len); =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/obj.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- obj.c 1 Nov 2003 18:56:43 -0000 1.15 +++ obj.c 10 Nov 2003 19:29:19 -0000 1.16 @@ -28,11 +28,11 @@ * This file contains the basic object class. * * @author Michael Jennings <[EMAIL PROTECTED]> - * $Revision: 1.15 $ - * $Date: 2003/11/01 18:56:43 $ + * $Revision: 1.16 $ + * $Date: 2003/11/10 19:29:19 $ */ -static const char cvs_ident[] = "$Id: obj.c,v 1.15 2003/11/01 18:56:43 mej Exp $"; +static const char cvs_ident[] = "$Id: obj.c,v 1.16 2003/11/10 19:29:19 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -118,7 +118,7 @@ spif_bool_t spif_obj_del(spif_obj_t self) { - D_OBJ(("Deleting object %8p\n", self)); + D_OBJ(("Deleting object %010p\n", self)); spif_obj_done(self); SPIF_DEALLOC(self); return TRUE; =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/regexp.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- regexp.c 4 Jul 2003 03:38:26 -0000 1.5 +++ regexp.c 10 Nov 2003 19:29:20 -0000 1.6 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: regexp.c,v 1.5 2003/07/04 03:38:26 mej Exp $"; +static const char cvs_ident[] = "$Id: regexp.c,v 1.6 2003/11/10 19:29:20 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -153,7 +153,7 @@ } memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_regexp_t) %s: %8p {\n", name, self); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_regexp_t) %s: %010p {\n", name, self); if (SPIF_REGEXP_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/socket.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- socket.c 4 Jul 2003 03:38:26 -0000 1.10 +++ socket.c 10 Nov 2003 19:29:20 -0000 1.11 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: socket.c,v 1.10 2003/07/04 03:38:26 mej Exp $"; +static const char cvs_ident[] = "$Id: socket.c,v 1.11 2003/11/10 19:29:20 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -181,7 +181,7 @@ snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_sockproto_t) proto: %d\n", (int) self->proto); spif_str_append_from_ptr(buff, tmp); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_sockaddr_t) addr: %8p\n", self->addr); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_sockaddr_t) addr: %010p\n", self->addr); spif_str_append_from_ptr(buff, tmp); snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_sockaddr_len_t) len: %lu\n", (unsigned long) self->len); =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/str.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- str.c 31 Oct 2003 20:23:25 -0000 1.21 +++ str.c 10 Nov 2003 19:29:20 -0000 1.22 @@ -21,7 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char cvs_ident[] = "$Id: str.c,v 1.21 2003/10/31 20:23:25 mej Exp $"; +static const char cvs_ident[] = "$Id: str.c,v 1.22 2003/11/10 19:29:20 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -109,7 +109,8 @@ spif_bool_t spif_str_del(spif_str_t self) { - D_OBJ(("Deleting string %8p\n", self)); + REQUIRE_RVAL(!SPIF_STR_ISNULL(self), FALSE); + D_OBJ(("Deleting string %010p\n", self)); spif_str_done(self); SPIF_DEALLOC(self); return TRUE; @@ -118,6 +119,7 @@ spif_bool_t spif_str_init(spif_str_t self) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); spif_obj_init(SPIF_OBJ(self)); spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(str)); self->s = SPIF_NULL_TYPE(charptr); @@ -129,6 +131,8 @@ spif_bool_t spif_str_init_from_ptr(spif_str_t self, spif_charptr_t old) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); + REQUIRE_RVAL((old != SPIF_NULL_TYPE(charptr)), spif_str_init(self)); spif_obj_init(SPIF_OBJ(self)); spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(str)); self->len = strlen(SPIF_CONST_CAST_C(char *) old); @@ -141,6 +145,7 @@ spif_bool_t spif_str_init_from_buff(spif_str_t self, spif_charptr_t buff, size_t size) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); spif_obj_init(SPIF_OBJ(self)); spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(str)); self->size = size; @@ -165,6 +170,8 @@ { spif_charptr_t p, end = NULL; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); + ASSERT_RVAL((fp != SPIF_NULL_TYPE_C(FILE *)), FALSE); spif_obj_init(SPIF_OBJ(self)); spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(str)); self->size = buff_inc; @@ -195,6 +202,8 @@ int n; spif_charptr_t p; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); + ASSERT_RVAL((fd >= 0), FALSE); spif_obj_init(SPIF_OBJ(self)); spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(str)); self->size = buff_inc; @@ -218,6 +227,7 @@ { char buff[28]; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); spif_obj_init(SPIF_OBJ(self)); spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(str)); @@ -248,7 +258,7 @@ { spif_str_t self; - REQUIRE_RVAL(!SPIF_STR_ISNULL(orig), FALSE); + REQUIRE_RVAL(!SPIF_STR_ISNULL(orig), SPIF_NULL_TYPE(str)); self = SPIF_ALLOC(str); memcpy(self, orig, SPIF_SIZEOF_TYPE(str)); self->s = SPIF_CAST(charptr) STRDUP(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(orig)); @@ -260,56 +270,74 @@ spif_cmp_t spif_str_cmp(spif_str_t self, spif_str_t other) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL(!SPIF_STR_ISNULL(other), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strcmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)SPIF_STR_STR(other))); } spif_cmp_t spif_str_cmp_with_ptr(spif_str_t self, spif_charptr_t other) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL((other != SPIF_NULL_TYPE(charptr)), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strcmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)other)); } spif_cmp_t spif_str_casecmp(spif_str_t self, spif_str_t other) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL(!SPIF_STR_ISNULL(other), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strcasecmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)SPIF_STR_STR(other))); } spif_cmp_t spif_str_casecmp_with_ptr(spif_str_t self, spif_charptr_t other) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL((other != SPIF_NULL_TYPE(charptr)), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strcasecmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)other)); } spif_cmp_t spif_str_ncmp(spif_str_t self, spif_str_t other, size_t cnt) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL(!SPIF_STR_ISNULL(other), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strncmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)SPIF_STR_STR(other), cnt)); } spif_cmp_t spif_str_ncmp_with_ptr(spif_str_t self, spif_charptr_t other, size_t cnt) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL((other != SPIF_NULL_TYPE(charptr)), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strncmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)other, cnt)); } spif_cmp_t spif_str_ncasecmp(spif_str_t self, spif_str_t other, size_t cnt) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL(!SPIF_STR_ISNULL(other), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strncasecmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)SPIF_STR_STR(other), cnt)); } spif_cmp_t spif_str_ncasecmp_with_ptr(spif_str_t self, spif_charptr_t other, size_t cnt) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CMP_FROM_INT(-1)); + ASSERT_RVAL((other != SPIF_NULL_TYPE(charptr)), SPIF_CMP_FROM_INT(-1)); return SPIF_CMP_FROM_INT(strncasecmp(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), SPIF_CONST_CAST_C(char *)other, cnt)); } size_t spif_str_index(spif_str_t self, spif_char_t c) { - char *tmp = index(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), c); + char *tmp; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), (SPIF_CAST_C(size_t) -1)); + tmp = index(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), c); if (tmp) { return SPIF_CAST_C(size_t) (SPIF_CAST_C(long) tmp - SPIF_CAST_C(long) (SPIF_STR_STR(self))); } else { @@ -320,8 +348,10 @@ size_t spif_str_rindex(spif_str_t self, spif_char_t c) { - char *tmp = rindex(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), c); + char *tmp; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), (SPIF_CAST_C(size_t) -1)); + tmp = rindex(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), c); if (tmp) { return SPIF_CAST_C(size_t) (SPIF_CAST_C(long) tmp - SPIF_CAST_C(long) (SPIF_STR_STR(self))); } else { @@ -332,9 +362,11 @@ size_t spif_str_find(spif_str_t self, spif_str_t other) { - char *tmp = strstr(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), - SPIF_CONST_CAST_C(char *) SPIF_STR_STR(other)); + char *tmp; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), (SPIF_CAST_C(size_t) -1)); + tmp = strstr(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), + SPIF_CONST_CAST_C(char *) SPIF_STR_STR(other)); if (tmp) { return SPIF_CAST_C(size_t) (SPIF_CAST_C(long) tmp - SPIF_CAST_C(long) (SPIF_STR_STR(self))); } else { @@ -345,9 +377,11 @@ size_t spif_str_find_from_ptr(spif_str_t self, spif_charptr_t other) { - char *tmp = strstr(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), - SPIF_CONST_CAST_C(char *) other); + char *tmp; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), (SPIF_CAST_C(size_t) -1)); + tmp = strstr(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), + SPIF_CONST_CAST_C(char *) other); if (tmp) { return SPIF_CAST_C(size_t) (SPIF_CAST_C(long) tmp - SPIF_CAST_C(long) (SPIF_STR_STR(self))); } else { @@ -358,6 +392,7 @@ spif_str_t spif_str_substr(spif_str_t self, spif_int32_t idx, spif_int32_t cnt) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_NULL_TYPE(str)); return spif_str_new_from_buff(SPIF_STR_STR(self) + ((idx < 0) ? (self->len) : (0)) + idx, cnt); } @@ -366,6 +401,7 @@ { spif_charptr_t newstr; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_NULL_TYPE(charptr)); newstr = SPIF_CAST(charptr) MALLOC(cnt + 1); memcpy(newstr, SPIF_STR_STR(self) + ((idx < 0) ? (self->len) : (0)) + idx, cnt); newstr[cnt] = 0; @@ -375,28 +411,35 @@ size_t spif_str_to_num(spif_str_t self, int base) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), (SPIF_CAST_C(size_t) -1)); return (size_t) (strtoul(SPIF_CONST_CAST_C(char *) SPIF_STR_STR(self), (char **) NULL, base)); } double spif_str_to_float(spif_str_t self) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_CAST_C(double) NAN); return (double) (strtod(SPIF_CONST_CAST_C(char *)SPIF_STR_STR(self), (char **) NULL)); } spif_bool_t spif_str_append(spif_str_t self, spif_str_t other) { - self->size += other->size - 1; - self->s = SPIF_CAST(charptr) REALLOC(self->s, self->size); - memcpy(self->s + self->len, SPIF_STR_STR(other), other->len + 1); - self->len += other->len; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); + REQUIRE_RVAL(!SPIF_STR_ISNULL(other), FALSE); + if (other->size && other->len) { + self->size += other->size - 1; + self->s = SPIF_CAST(charptr) REALLOC(self->s, self->size); + memcpy(self->s + self->len, SPIF_STR_STR(other), other->len + 1); + self->len += other->len; + } return TRUE; } spif_bool_t spif_str_append_char(spif_str_t self, spif_char_t c) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); self->len++; if (self->size <= self->len) { self->size++; @@ -412,17 +455,22 @@ { size_t len; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); + REQUIRE_RVAL((other != SPIF_NULL_TYPE(charptr)), FALSE); len = strlen(SPIF_CONST_CAST_C(char *) other); - self->size += len; - self->s = SPIF_CAST(charptr) REALLOC(self->s, self->size); - memcpy(self->s + self->len, other, len + 1); - self->len += len; + if (len) { + self->size += len; + self->s = SPIF_CAST(charptr) REALLOC(self->s, self->size); + memcpy(self->s + self->len, other, len + 1); + self->len += len; + } return TRUE; } spif_bool_t spif_str_clear(spif_str_t self, spif_char_t c) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); memset(self->s, c, self->size); self->s[self->len] = 0; return TRUE; @@ -433,6 +481,7 @@ { spif_charptr_t start, end; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); start = self->s; end = self->s + self->len - 1; for (; isspace((spif_uchar_t) (*start)) && (start < end); start++); @@ -454,6 +503,7 @@ spif_charptr_t tmp, ptmp; size_t newsize; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); newsize = self->len + ((SPIF_STR_ISNULL(other)) ? (0) : (other->len)) - cnt + 1; ptmp = tmp = SPIF_CAST(charptr) MALLOC(newsize); if (idx > 0) { @@ -481,6 +531,7 @@ spif_charptr_t tmp, ptmp; size_t len, newsize; + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); len = (other ? strlen(SPIF_CONST_CAST_C(char *) other) : 0); newsize = self->len + len - cnt + 1; ptmp = tmp = SPIF_CAST(charptr) MALLOC(newsize); @@ -506,6 +557,7 @@ spif_bool_t spif_str_reverse(spif_str_t self) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE); return ((strrev(SPIF_CAST_C(char *) self->s)) ? TRUE : FALSE); } @@ -523,7 +575,7 @@ } memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_str_t) %s: %8p { \"", name, self); + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_str_t) %s: %010p { \"", name, self); if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { @@ -541,5 +593,6 @@ spif_classname_t spif_str_type(spif_str_t self) { + ASSERT_RVAL(!SPIF_STR_ISNULL(self), SPIF_NULLSTR_TYPE(classname)); return SPIF_OBJ_CLASSNAME(self); } =================================================================== RCS file: /cvsroot/enlightenment/eterm/libast/src/strings.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- strings.c 17 Jun 2003 00:44:08 -0000 1.10 +++ strings.c 10 Nov 2003 19:29:21 -0000 1.11 @@ -30,7 +30,7 @@ * @author Michael Jennings <[EMAIL PROTECTED]> */ -static const char cvs_ident[] = "$Id: strings.c,v 1.10 2003/06/17 00:44:08 mej Exp $"; +static const char cvs_ident[] = "$Id: strings.c,v 1.11 2003/11/10 19:29:21 mej Exp $"; #ifdef HAVE_CONFIG_H # include <config.h> @@ -740,20 +740,20 @@ register unsigned char *ptr; unsigned char buffr[9]; - print_error(" Address | Size | Offset | 00 01 02 03 04 05 06 07 | ASCII \n"); - print_error("---------+--------+---------+-------------------------+---------\n"); + fprintf(stderr, " Address | Size | Offset | 00 01 02 03 04 05 06 07 | ASCII \n"); + fprintf(stderr, "-----------+--------+---------+-------------------------+---------\n"); for (ptr = (unsigned char *) buff, j = 0; j < count; j += 8) { - print_error(" %8p | %06lu | %07x | ", buff, (unsigned long) count, (unsigned int) j); + fprintf(stderr, " %010p | %06lu | %07x | ", buff, (unsigned long) count, (unsigned int) j); l = ((count - j < 8) ? (count - j) : (8)); memcpy(buffr, ptr + j, l); memset(buffr + l, 0, 9 - l); for (k = 0; k < l; k++) { - print_error("%02x ", buffr[k]); + fprintf(stderr, "%02x ", buffr[k]); } for (; k < 8; k++) { - print_error(" "); + fprintf(stderr, " "); } - print_error("| %-8s\n", safe_str((char *) buffr, l)); + fprintf(stderr, "| %-8s\n", safe_str((char *) buffr, l)); } } ------------------------------------------------------- This SF.Net email sponsored by: ApacheCon 2003, 16-19 November in Las Vegas. Learn firsthand the latest developments in Apache, PHP, Perl, XML, Java, MySQL, WebDAV, and more! http://www.apachecon.com/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs