annotate bwa-0.6.2/kstring.c @ 2:a294fbfcb1db draft default tip

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