Initial revision
[ftsbench.git] / utils.c
1 #include <string.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4
5 #include "ftsbench.h"
6
7 void 
8 sb_add(StringBuf *b, char *s, int length)
9 {
10         if ( length <=0 )
11                 length = strlen(s);
12
13         if ( b->strlen + length + 1 >= b->length ) {
14                 if ( b->str == NULL || b->length == 0 ) {
15                         b->length = (length + 1)*4;
16                         b->str = (char*)malloc( sizeof(char) * b->length );
17                 } else {
18                         do 
19                                 b->length *= 2;
20                         while( b->strlen + length + 1 >= b->length );
21                         b->str = (char*)realloc( b->str, sizeof(char) * b->length );
22                 }
23
24                 if (!b->str) {
25                         fprintf(stderr,"Not enough memory (%d bytes)\n", b->length);
26                         exit(1);
27                 }
28         }
29
30         memcpy(b->str + b->strlen, s, length);
31         b->strlen += length;
32         b->str[ b->strlen ] = '\0';
33 }
34
35