X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fgrab_file%2Ftest%2Frun-grab.c;h=c9f242609697423e38483af5b0181a5cd9b3fbc9;hb=fe21b246647e4694da5f76e0fd00e9a9f9e8c72e;hp=b3c18e5a4db20369c42096c00734b1e4ce098a9c;hpb=85a33135890965218010b79c89e4d3f4905727e3;p=ccan diff --git a/ccan/grab_file/test/run-grab.c b/ccan/grab_file/test/run-grab.c index b3c18e5a..c9f24260 100644 --- a/ccan/grab_file/test/run-grab.c +++ b/ccan/grab_file/test/run-grab.c @@ -7,8 +7,30 @@ #include #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[]) @@ -19,20 +41,18 @@ main(int argc, char *argv[]) struct stat st; str = grab_file(NULL, "test/run-grab.c", NULL); - /* FIXME: run_tests runs us from top level dir. Kill this */ - if (!str) - str = grab_file(NULL, "ccan/grab_file/test/run-grab.c", NULL); - split = strsplit(NULL, str, "\n", NULL); + split = strsplit(str, str, "\n"); length = strlen(split[0]); - ok1(streq(split[0], "/* This is test for grab_file() function")); + ok1(!strcmp(split[0], "/* This is test for grab_file() function")); for (i = 1; split[i]; i++) length += strlen(split[i]); - ok1(streq(split[i-1], "/* End of grab_file() test */")); + ok1(!strcmp(split[i-1], "/* End of grab_file() test */")); if (stat("test/run-grab.c", &st) != 0) /* FIXME: ditto */ 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; }