X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fmanifest.c;h=82668acfed05fd43eab6b59c7d61dba4f258652f;hp=9a8c4cd097d9632387032ad2366ac438e17c1d97;hb=f7ead5da96bfb5ce3ebffe11256bbcb5f4b4f750;hpb=eca104468958afaa893b76d9b3545cd554563538 diff --git a/tools/manifest.c b/tools/manifest.c index 9a8c4cd0..82668acf 100644 --- a/tools/manifest.c +++ b/tools/manifest.c @@ -112,8 +112,8 @@ static void add_files(struct manifest *m, const char *base, const char *subdir) f = new_ccan_file(m, m->dir, subdir ? path_join(m, subdir, ent->d_name) : ent->d_name); - if (lstat(f->fullname, &st) != 0) - err(1, "lstat %s", f->fullname); + if (stat(f->fullname, &st) != 0) + err(1, "stat %s", f->fullname); if (S_ISDIR(st.st_mode)) { size_t len = tal_count(subs); @@ -167,16 +167,23 @@ static void add_files(struct manifest *m, const char *base, const char *subdir) if (!m->info_file && list_empty(&m->c_files) && list_empty(&m->h_files)) - errx(1, "No _info, C or H files found here!"); - - for (i = 0; i < tal_count(subs); i++) - add_files(m, base, subs[i]); + errx(1, "No _info, C or H files found in %s", thisdir); + + /* Don't enter subdirs with _info: they're separate modules. */ + for (i = 0; i < tal_count(subs); i++) { + struct stat st; + char *subinfo = path_join(subs, base, + path_join(subs, subs[i], + "_info")); + if (lstat(subinfo, &st) != 0) + add_files(m, base, subs[i]); + } } tal_free(subs); } static int cmp_names(struct ccan_file *const *a, struct ccan_file *const *b, - void *unused) + void *unused UNNEEDED) { return strcmp((*a)->name, (*b)->name); }