diff options
author | Michael Jennings <mej@kainx.org> | 2002-04-19 22:36:54 +0000 |
---|---|---|
committer | Michael Jennings <mej@kainx.org> | 2002-04-19 22:36:54 +0000 |
commit | 62c599416ab353238fdd0c6be8232d780f4d4e58 (patch) | |
tree | 4674e06035ab73fa719e0498597f9ecafaae3da2 /src/str.c | |
parent | 5e9cc0558e1f55902993c4f66fd7850efb2f4de1 (diff) | |
download | libast-62c599416ab353238fdd0c6be8232d780f4d4e58.tar.gz |
Fri Apr 19 18:35:21 2002 Michael Jennings (mej)
Working tokenizer. The question is, how much do I need to add in the
way of flexibility.... Shell-style parsing? Null-field support?
*ponders*
SVN revision: 6157
Diffstat (limited to 'src/str.c')
-rw-r--r-- | src/str.c | 29 |
1 files changed, 27 insertions, 2 deletions
@@ -335,6 +335,19 @@ spif_str_append(spif_str_t self, spif_str_t other) } spif_bool_t +spif_str_append_char(spif_str_t self, spif_char_t c) +{ + self->len++; + if (self->mem <= self->len) { + self->mem++; + self->s = SPIF_CAST(charptr) REALLOC(self->s, self->mem); + } + SPIF_CAST(char) (self->s[self->len - 1]) = c; + self->s[self->len] = 0; + return TRUE; +} + +spif_bool_t spif_str_append_from_ptr(spif_str_t self, spif_charptr_t other) { size_t len; @@ -348,6 +361,14 @@ spif_str_append_from_ptr(spif_str_t self, spif_charptr_t other) } spif_bool_t +spif_str_clear(spif_str_t self, spif_char_t c) +{ + memset(self->s, c, self->mem); + self->s[self->len] = 0; + return TRUE; +} + +spif_bool_t spif_str_trim(spif_str_t self) { spif_charptr_t start, end; @@ -474,8 +495,12 @@ spif_str_show(spif_str_t self, spif_charptr_t name, spif_str_t buff, size_t inde char tmp[4096]; memset(tmp, ' ', indent); - snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_str_t) %s: { \"%s\", len %lu, size %lu }\n", - name, self->s, (unsigned long) self->len, (unsigned long) self->mem); + if (SPIF_STR_ISNULL(self)) { + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_str_t) %s: " SPIF_NULLSTR_TYPE(str) "\n", NONULL(name)); + } else { + snprintf(tmp + indent, sizeof(tmp) - indent, "(spif_str_t) %s: { \"%s\", len %lu, size %lu }\n", + name, self->s, (unsigned long) self->len, (unsigned long) self->mem); + } if (SPIF_STR_ISNULL(buff)) { buff = spif_str_new_from_ptr(tmp); } else { |