X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=lib%2Fmempool-str.c;h=176ff3e21e046169c1420ae8402910694544b9f9;hb=669b67c13dac4d59bd771a8dc908e2dcfe114845;hp=360a3b950362e7f2e83f90a23875363f89fe55ea;hpb=4653232432f5725243c08bc2e720c80a5412d405;p=libucw.git diff --git a/lib/mempool-str.c b/lib/mempool-str.c index 360a3b95..176ff3e2 100644 --- a/lib/mempool-str.c +++ b/lib/mempool-str.c @@ -14,7 +14,7 @@ #include char * -mp_strdup(struct mempool *p, char *s) +mp_strdup(struct mempool *p, const char *s) { uns l = strlen(s) + 1; char *t = mp_alloc_fast_noalign(p, l); @@ -22,6 +22,14 @@ mp_strdup(struct mempool *p, char *s) return t; } +void * +mp_memdup(struct mempool *p, const void *s, uns len) +{ + void *t = mp_alloc_fast(p, len); + memcpy(t, s, len); + return t; +} + char * mp_multicat(struct mempool *p, ...) { @@ -53,6 +61,28 @@ mp_multicat(struct mempool *p, ...) return buf; } +char * +mp_strjoin(struct mempool *p, char **a, uns n, uns sep) +{ + uns sizes[n]; + uns len = 1; + for (uns i=0; i @@ -63,6 +93,9 @@ int main(void) char *s = mp_strdup(p, "12345"); char *c = mp_multicat(p, "<<", s, ">>", NULL); puts(c); + char *a[] = { "bugs", "gnats", "insects" }; + puts(mp_strjoin(p, a, 3, '.')); + puts(mp_strjoin(p, a, 3, 0)); return 0; }