From 904cfe9453e7350d6df3d0f2166c36d86f252546 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 7 Oct 2010 13:12:57 +1030 Subject: [PATCH] tools: fix bug in doc-extract, handle spaces in summary line /** * struct foo - some description So, here can have a space in it. --- tools/doc_extract-core.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/tools/doc_extract-core.c b/tools/doc_extract-core.c index 829d3477..583328a1 100644 --- a/tools/doc_extract-core.c +++ b/tools/doc_extract-core.c @@ -26,8 +26,10 @@ static char **grab_doc(char **lines, unsigned int num) for (i = 0; lines[i]; i++) { if (streq(lines[i], "/**")) { printing = true; - if (num != 0) - talloc_append_string(ret[num-1], "\n"); + if (num != 0) { + ret[num-1] = talloc_append_string(ret[num-1], + "\n"); + } } else if (streq(lines[i], " */")) printing = false; else if (printing) { @@ -65,18 +67,18 @@ static bool is_section(const char *line, bool one_liner) return line[len] == ':' && is_blank(line+len+1); } -/* Summary line is form ' - ' */ -static bool is_summary_line(const char *line) +/* Summary line is form ' - ' (spaces for 'struct foo -') */ +static unsigned int is_summary_line(const char *line) { unsigned int id_len; - id_len = strspn(line, IDENT_CHARS); + id_len = strspn(line, IDENT_CHARS" "); if (id_len == 0) - return false; - if (!strstarts(line + id_len, " - ")) - return false; + return 0; + if (!strstarts(line + id_len-1, " - ")) + return 0; - return true; + return id_len - 1; } static bool empty_section(struct doc_section *d) @@ -137,11 +139,13 @@ struct list_head *extract_doc_sections(char **rawlines, unsigned int num) list_head_init(list); for (i = 0; lines[i]; i++) { - if (is_summary_line(lines[i])) { - function = talloc_strndup(list, lines[i], - strcspn(lines[i], " ")); + unsigned funclen; + + funclen = is_summary_line(lines[i]); + if (funclen) { + function = talloc_strndup(list, lines[i], funclen); curr = new_section(list, function, "summary"); - add_line(curr, strstr(lines[i], " - ") + 3); + add_line(curr, lines[i] + funclen + 3); curr = new_section(list, function, "description"); } else if (is_section(lines[i], false)) { char *type = talloc_strndup(curr, lines[i], -- 2.39.2