annotate sbr/concat.c @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children 442dbbf0ac7d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /* concat.c - concatenate a bunch of strings in managed memory */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 #include "../h/mh.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 #include <stdio.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 #include <varargs.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 /* VARARGS */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 char *concat (va_alist)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 va_dcl
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 register char *cp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 *dp,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 *sp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 register unsigned len;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 register va_list list;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 len = 1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 va_start (list);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 while (cp = va_arg (list, char *))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 len += strlen (cp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 va_end (list);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 dp = sp = malloc (len);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 if (dp == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 adios (NULLCP, "unable to allocate string storage");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 va_start (list);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 while (cp = va_arg (list, char *))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 sp = copy (cp, sp);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 va_end (list);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 return dp;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 }