Commit 6a4d4533 authored by Rusty Russell's avatar Rusty Russell

tools: don't abort on malformed documentation lines.

ccanlint would abort with 'Malformed line 53' if there was a bad header.
That's very poor, and deeply unhelpful.
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 2b7f1fca
...@@ -27,7 +27,7 @@ struct list_head *get_ccan_file_docs(struct ccan_file *f) ...@@ -27,7 +27,7 @@ struct list_head *get_ccan_file_docs(struct ccan_file *f)
{ {
if (!f->doc_sections) { if (!f->doc_sections) {
get_ccan_file_lines(f); get_ccan_file_lines(f);
f->doc_sections = extract_doc_sections(f->lines); f->doc_sections = extract_doc_sections(f->lines, f->name);
} }
return f->doc_sections; return f->doc_sections;
} }
......
...@@ -15,7 +15,8 @@ ...@@ -15,7 +15,8 @@
#include "doc_extract.h" #include "doc_extract.h"
#include "tools.h" #include "tools.h"
static char **grab_doc(char **lines, unsigned int **linemap) static char **grab_doc(char **lines, unsigned int **linemap,
const char *file)
{ {
char **ret; char **ret;
unsigned int i, num; unsigned int i, num;
...@@ -39,8 +40,19 @@ static char **grab_doc(char **lines, unsigned int **linemap) ...@@ -39,8 +40,19 @@ static char **grab_doc(char **lines, unsigned int **linemap)
ret[num++] = talloc_strdup(ret, lines[i]+3); ret[num++] = talloc_strdup(ret, lines[i]+3);
else if (strstarts(lines[i], " *")) else if (strstarts(lines[i], " *"))
ret[num++] = talloc_strdup(ret, lines[i]+2); ret[num++] = talloc_strdup(ret, lines[i]+2);
else else {
errx(1, "Malformed line %u", i); /* Weird, malformed? */
static bool warned;
if (!warned) {
warnx("%s:%u:"
" Expected ' *' in comment.",
file, i+1);
warned++;
}
ret[num++] = talloc_strdup(ret, lines[i]);
if (strstr(lines[i], "*/"))
printing = false;
}
(*linemap)[num-1] = i; (*linemap)[num-1] = i;
} }
} }
...@@ -195,10 +207,10 @@ static void trim_lines(struct doc_section *curr) ...@@ -195,10 +207,10 @@ static void trim_lines(struct doc_section *curr)
curr->num_lines = last_non_empty + 1; curr->num_lines = last_non_empty + 1;
} }
struct list_head *extract_doc_sections(char **rawlines) struct list_head *extract_doc_sections(char **rawlines, const char *file)
{ {
unsigned int *linemap; unsigned int *linemap;
char **lines = grab_doc(rawlines, &linemap); char **lines = grab_doc(rawlines, &linemap, file);
const char *function = NULL; const char *function = NULL;
struct doc_section *curr = NULL; struct doc_section *curr = NULL;
unsigned int i; unsigned int i;
......
...@@ -52,7 +52,7 @@ int main(int argc, char *argv[]) ...@@ -52,7 +52,7 @@ int main(int argc, char *argv[])
err(1, "Reading file %s", argv[i]); err(1, "Reading file %s", argv[i]);
lines = strsplit(file, file, "\n"); lines = strsplit(file, file, "\n");
list = extract_doc_sections(lines); list = extract_doc_sections(lines, argv[i]);
if (list_empty(list)) if (list_empty(list))
errx(1, "No documentation in file %s", argv[i]); errx(1, "No documentation in file %s", argv[i]);
talloc_free(file); talloc_free(file);
......
...@@ -13,5 +13,5 @@ struct doc_section { ...@@ -13,5 +13,5 @@ struct doc_section {
char **lines; char **lines;
}; };
struct list_head *extract_doc_sections(char **rawlines); struct list_head *extract_doc_sections(char **rawlines, const char *file);
#endif /* _DOC_EXTRACT_CORE_H */ #endif /* _DOC_EXTRACT_CORE_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment