summaryrefslogtreecommitdiffstats
path: root/src/strbuf.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-06-19 01:01:09 +0000
committerLennart Poettering <lennart@poettering.net>2004-06-19 01:01:09 +0000
commit56f8c953dd609bc5c94011fe4acdd9ef6b875747 (patch)
tree9fb30d4fa48eea2b66f81bd84e16ebc22a9b09c6 /src/strbuf.c
parent382e7aefd471a4600010a04e6497d4bfd2fd8663 (diff)
some more work on the cli
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@24 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/strbuf.c')
-rw-r--r--src/strbuf.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/strbuf.c b/src/strbuf.c
index 97c451c1..9ce67ec3 100644
--- a/src/strbuf.c
+++ b/src/strbuf.c
@@ -7,6 +7,7 @@
struct chunk {
struct chunk *next;
+ size_t length;
char text[];
};
@@ -43,12 +44,13 @@ char *strbuf_tostring(struct strbuf *sb) {
assert(t);
e = t;
- *e = 0;
for (c = sb->head; c; c = c->next) {
- strcpy(e, c->text);
- e = strchr(e, 0);
+ memcpy(e, c->text, c->length);
+ e += c->length;
}
+ *e = 0;
+
return t;
}
@@ -70,7 +72,8 @@ void strbuf_puts(struct strbuf *sb, const char *t) {
assert(c);
c->next = NULL;
- strcpy(c->text, t);
+ c->length = l;
+ memcpy(c->text, t, l);
if (sb->tail) {
assert(sb->head);
@@ -101,6 +104,7 @@ int strbuf_printf(struct strbuf *sb, const char *format, ...) {
va_end(ap);
if (r > -1 && r < size) {
+ c->length = r;
c->next = NULL;
if (sb->tail) {