X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fgrab_file%2Ftest%2Frun-grab.c;h=c9f242609697423e38483af5b0181a5cd9b3fbc9;hp=deb466e91d374e120ea9dc812fd96c5cc92cb7b6;hb=HEAD;hpb=100444225380d3f5ca29424ea54703d308c7c651 diff --git a/ccan/grab_file/test/run-grab.c b/ccan/grab_file/test/run-grab.c index deb466e9..c9f24260 100644 --- a/ccan/grab_file/test/run-grab.c +++ b/ccan/grab_file/test/run-grab.c @@ -7,7 +7,30 @@ #include #include #include -#include +#include + +static char **strsplit(const void *ctx, const char *string, const char *delims) +{ + char **lines = NULL; + unsigned int max = 64, num = 0; + + lines = talloc_array(ctx, char *, max+1); + + while (*string != '\0') { + unsigned int len = strcspn(string, delims); + lines[num] = talloc_array(lines, char, len + 1); + memcpy(lines[num], string, len); + lines[num][len] = '\0'; + string += len; + string += strspn(string, delims) ? 1 : 0; + if (++num == max) + lines = talloc_realloc(ctx, lines, char *, max*=2 + 1); + } + lines[num] = NULL; + + /* Shrink, so talloc_get_size works */ + return talloc_realloc(ctx, lines, char *, num+1); +} int main(int argc, char *argv[]) @@ -18,7 +41,7 @@ main(int argc, char *argv[]) struct stat st; str = grab_file(NULL, "test/run-grab.c", NULL); - split = strsplit(NULL, str, "\n"); + split = strsplit(str, str, "\n"); length = strlen(split[0]); ok1(!strcmp(split[0], "/* This is test for grab_file() function")); for (i = 1; split[i]; i++) @@ -29,6 +52,7 @@ main(int argc, char *argv[]) if (stat("ccan/grab_file/test/run-grab.c", &st) != 0) err(1, "Could not stat self"); ok1(st.st_size == length + i); + talloc_free(str); return 0; }