annotate bwa-0.7.9a/kstring.c @ 0:ce5a8082bbb8 draft

Uploaded
author xilinxu
date Thu, 14 Aug 2014 02:16:48 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
1 #include <stdarg.h>
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
2 #include <stdio.h>
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
3 #include "kstring.h"
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
4
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
5 #ifdef USE_MALLOC_WRAPPERS
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
6 # include "malloc_wrap.h"
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
7 #endif
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
8
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
9 int ksprintf(kstring_t *s, const char *fmt, ...)
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
10 {
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
11 va_list ap;
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
12 int l;
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
13 va_start(ap, fmt);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
14 l = vsnprintf(s->s + s->l, s->m - s->l, fmt, ap);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
15 va_end(ap);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
16 if (l + 1 > s->m - s->l) {
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
17 s->m = s->l + l + 2;
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
18 kroundup32(s->m);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
19 s->s = (char*)realloc(s->s, s->m);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
20 va_start(ap, fmt);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
21 l = vsnprintf(s->s + s->l, s->m - s->l, fmt, ap);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
22 }
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
23 va_end(ap);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
24 s->l += l;
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
25 return l;
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
26 }
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
27
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
28 #ifdef KSTRING_MAIN
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
29 #include <stdio.h>
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
30 int main()
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
31 {
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
32 kstring_t *s;
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
33 s = (kstring_t*)calloc(1, sizeof(kstring_t));
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
34 ksprintf(s, "abcdefg: %d", 100);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
35 printf("%s\n", s->s);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
36 free(s);
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
37 return 0;
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
38 }
ce5a8082bbb8 Uploaded
xilinxu
parents:
diff changeset
39 #endif