projects
/
ccan
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d009356
)
ccanlint: use strreg for section extraction.
author
Rusty Russell
<rusty@rustcorp.com.au>
Sat, 8 Jan 2011 08:07:19 +0000
(18:37 +1030)
committer
Rusty Russell
<rusty@rustcorp.com.au>
Sat, 8 Jan 2011 08:07:19 +0000
(18:37 +1030)
Makes it simpler and clearer.
tools/doc_extract-core.c
patch
|
blob
|
history
diff --git
a/tools/doc_extract-core.c
b/tools/doc_extract-core.c
index 07d31c77c01f15e85cbc3cebda601b050b916c5f..aa0a26d829197ef351a8643527fddb9ca6dd768a 100644
(file)
--- a/
tools/doc_extract-core.c
+++ b/
tools/doc_extract-core.c
@@
-11,6
+11,7
@@
#include <ctype.h>
#include <ccan/talloc/talloc.h>
#include <ccan/str/str.h>
#include <ctype.h>
#include <ccan/talloc/talloc.h>
#include <ccan/str/str.h>
+#include <ccan/str_talloc/str_talloc.h>
#include "doc_extract.h"
#include "tools.h"
#include "doc_extract.h"
#include "tools.h"
@@
-50,28
+51,17
@@
static bool is_blank(const char *line)
return line && line[strspn(line, " \t\n")] == '\0';
}
return line && line[strspn(line, " \t\n")] == '\0';
}
-static
bool is_section(const char *line, bool one_liner
)
+static
char *is_section(const void *ctx, const char *line, char **value
)
{
{
-
unsigned int len = 0
;
+
char *secname
;
/* Any number of upper case words separated by spaces, ending in : */
/* Any number of upper case words separated by spaces, ending in : */
- for (;;) {
- if (!isupper(line[len]))
- return false;
- len += strspn(line+len, IDENT_CHARS);
- if (line[len] == ':')
- break;
-
- if (line[len] != ' ')
- return false;
- len++;
- }
+ if (!strreg(ctx, line,
+ "^([A-Z][a-zA-Z0-9_]*( [A-Z][a-zA-Z0-9_]*)*):[ \t\n]*(.*)",
+ &secname, NULL, value))
+ return NULL;
- /* If it can be a one-liner, a space is sufficient.*/
- if (one_liner)
- return (line[len+1] == ' ' || line[len+1] == '\t');
-
- return line[len] == ':' && is_blank(line+len+1);
+ return secname;
}
/* Summary line is form '<identifier> - ' (spaces for 'struct foo -') */
}
/* Summary line is form '<identifier> - ' (spaces for 'struct foo -') */
@@
-148,6
+138,7
@@
struct list_head *extract_doc_sections(char **rawlines, unsigned int num)
for (i = 0; lines[i]; i++) {
unsigned funclen;
for (i = 0; lines[i]; i++) {
unsigned funclen;
+ char *type, *extra;
funclen = is_summary_line(lines[i]);
if (funclen) {
funclen = is_summary_line(lines[i]);
if (funclen) {
@@
-155,20
+146,15
@@
struct list_head *extract_doc_sections(char **rawlines, unsigned int num)
curr = new_section(list, function, "summary");
add_line(curr, lines[i] + funclen + 3);
curr = new_section(list, function, "description");
curr = new_section(list, function, "summary");
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],
- strcspn(lines[i], ":"));
- curr = new_section(list, function, type);
- } else if (is_section(lines[i], true)) {
- unsigned int sectlen = strcspn(lines[i], ":");
- char *type = talloc_strndup(curr, lines[i], sectlen);
+ } else if ((type = is_section(list, lines[i], &extra)) != NULL){
curr = new_section(list, function, type);
curr = new_section(list, function, type);
- add_line(curr, lines[i] + sectlen + 1
- + strspn(lines[i] + sectlen + 1, " \t"));
+ if (!streq(extra, "")) {
+ add_line(curr, extra);
+ curr = NULL;
+ }
} else {
} else {
- if (!curr)
- continue;
- add_line(curr, lines[i]);
+ if (curr)
+ add_line(curr, lines[i]);
}
}
talloc_free(lines);
}
}
talloc_free(lines);