summaryrefslogtreecommitdiff
path: root/src/str.c
diff options
context:
space:
mode:
authorMichael Jennings <mej@kainx.org>2002-04-19 22:36:54 +0000
committerMichael Jennings <mej@kainx.org>2002-04-19 22:36:54 +0000
commit62c599416ab353238fdd0c6be8232d780f4d4e58 (patch)
tree4674e06035ab73fa719e0498597f9ecafaae3da2 /src/str.c
parent5e9cc0558e1f55902993c4f66fd7850efb2f4de1 (diff)
downloadlibast-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.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/str.c b/src/str.c
index 82cc15a..14d39ce 100644
--- a/src/str.c
+++ b/src/str.c
@@ -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 {