]>
code.delx.au - pulseaudio/blob - src/strbuf.c
16 struct chunk
*head
, *tail
;
19 struct strbuf
*strbuf_new(void) {
20 struct strbuf
*sb
= malloc(sizeof(struct strbuf
));
23 sb
->head
= sb
->tail
= NULL
;
27 void strbuf_free(struct strbuf
*sb
) {
30 struct chunk
*c
= sb
->head
;
31 sb
->head
= sb
->head
->next
;
38 char *strbuf_tostring(struct strbuf
*sb
) {
43 t
= malloc(sb
->length
+1);
47 for (c
= sb
->head
; c
; c
= c
->next
) {
48 memcpy(e
, c
->text
, c
->length
);
57 char *strbuf_tostring_free(struct strbuf
*sb
) {
60 t
= strbuf_tostring(sb
);
65 void strbuf_puts(struct strbuf
*sb
, const char *t
) {
71 c
= malloc(sizeof(struct chunk
)+l
);
76 memcpy(c
->text
, t
, l
);
90 int strbuf_printf(struct strbuf
*sb
, const char *format
, ...) {
92 struct chunk
*c
= NULL
;
99 c
= realloc(c
, sizeof(struct chunk
)+size
);
102 va_start(ap
, format
);
103 r
= vsnprintf(c
->text
, size
, format
, ap
);
106 if (r
> -1 && r
< size
) {
124 if (r
> -1) /* glibc 2.1 */