X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Fexamples_exist.c;h=c42a2e4e9ff27c5f183b498e798c3ae10a1e238f;hb=6aa2f4e347e5d66a392b879fe901bc582099a552;hp=a0adcdbc39f6fc1ade09bab1e8d1b8a86f5d8b63;hpb=dc8042b42500f79f613b1197df6cdf739615a89f;p=ccan diff --git a/tools/ccanlint/tests/examples_exist.c b/tools/ccanlint/tests/examples_exist.c index a0adcdbc..c42a2e4e 100644 --- a/tools/ccanlint/tests/examples_exist.c +++ b/tools/ccanlint/tests/examples_exist.c @@ -1,6 +1,8 @@ #include #include #include +#include +#include #include #include #include @@ -23,16 +25,15 @@ static char *add_example(struct manifest *m, struct ccan_file *source, int fd; struct ccan_file *f; - name = tal_fmt(m, "%s/example-%s-%s.c", - tal_dirname(m, source->fullname), - source->name, - example->function); + name = tal_fmt(m, "example-%s-%s", + source->name, example->function); /* example->function == 'struct foo' */ while (strchr(name, ' ')) *strchr(name, ' ') = '_'; - name = temp_file(m, ".c", name); - f = new_ccan_file(m, tal_dirname(m, name), tal_basename(m, name)); + name = temp_file(m, ".c", take(name)); + f = new_ccan_file(m, take(path_dirname(m, name)), + take(path_basename(m, name))); tal_steal(f, name); list_add_tail(&m->examples, &f->list); @@ -78,13 +79,12 @@ static void extract_examples(struct manifest *m, } } - /* Check main header. */ + /* Check all headers for examples. */ list_for_each(&m->h_files, f, list) { - if (!strstarts(f->name, m->basename) - || strlen(f->name) != strlen(m->basename) + 2) - continue; + if (strstarts(f->name, m->basename) + && strlen(f->name) == strlen(m->basename) + 2) + mainh = f; - mainh = f; list_for_each(get_ccan_file_docs(f), d, list) { if (streq(d->type, "example")) { score->error = add_example(m, f, d); @@ -114,7 +114,7 @@ struct ccanlint examples_exist = { .key = "examples_exist", .name = "_info and main header file have Example: sections", .check = extract_examples, - .needs = "info_exists" + .needs = "info_exists main_header_exists" }; REGISTER_TEST(examples_exist);