static char *example_obj_list(struct manifest *m, struct ccan_file *f) { struct manifest **deps = talloc_array(f, struct manifest *, 0); char **lines, *list; unsigned int i; /* This one for a start. */ add_dep(&deps, m->basename); /* Other modules implied by includes. */ for (lines = get_ccan_file_lines(f); *lines; lines++) { unsigned preflen = strspn(*lines, " \t"); if (strstarts(*lines + preflen, "#include <ccan/")) { char *modname; modname = talloc_strdup(f, *lines + preflen + strlen("#include <ccan/")); modname[strcspn(modname, "/")] = '\0'; if (!have_mod(deps, modname)) add_dep(&deps, modname); } } list = talloc_strdup(f, ""); for (i = 0; i < talloc_get_size(deps) / sizeof(*deps); i++) { if (deps[i]->compiled[COMPILE_NORMAL]) list = talloc_asprintf_append(list, " %s", deps[i]->compiled [COMPILE_NORMAL]); } return list; }
list_for_each(list, f, list) { char **lines = get_ccan_file_lines(f); for (i = 0; f->lines[i]; i++) { char *err = get_trailing_whitespace(score, lines[i]); if (err) score_file_error(score, f, i+1, "%s", err); } }