ucx/string.c

changeset 100
e0ec80179a5d
parent 98
0a752853f792
child 103
08018864fb91
equal deleted inserted replaced
99:4566ef29f16b 100:e0ec80179a5d
37 va_end(ap); 37 va_end(ap);
38 38
39 return size; 39 return size;
40 } 40 }
41 41
42 sstr_t sstrcat(sstr_t s, ...) {
43 va_list ap;
44 va_start(ap, s);
45 s.ptr[0] = 0;
46
47 sstr_t str = va_arg (ap, sstr_t);
48 while (str.ptr != NULL) {
49 s.ptr = strncat (s.ptr, str.ptr, s.length);
50 str = va_arg (ap, sstr_t);
51 }
52 va_end(ap);
53
54 return s;
55 }
56
57 sstr_t sstrncat(size_t n, sstr_t s, sstr_t c1, ...) { 42 sstr_t sstrncat(size_t n, sstr_t s, sstr_t c1, ...) {
58 va_list ap; 43 va_list ap;
59 va_start(ap, c1); 44 va_start(ap, c1);
60 s.ptr[0] = 0; 45 s.ptr[0] = 0;
61 46
76 memcpy(ptr, str.ptr, cplen); 61 memcpy(ptr, str.ptr, cplen);
77 len -= cplen; 62 len -= cplen;
78 ptr += cplen; 63 ptr += cplen;
79 } 64 }
80 va_end(ap); 65 va_end(ap);
66 s.length = ptr - s.ptr;
81 67
82 return s; 68 return s;
83 } 69 }
84 70
85 sstr_t sstrsubs(sstr_t s, size_t start) { 71 sstr_t sstrsubs(sstr_t s, size_t start) {

mercurial