return true;
}
+static bool empty_section(struct doc_section *d)
+{
+ unsigned int i;
+
+ for (i = 0; i < d->num_lines; i++)
+ if (!is_blank(d->lines[i]))
+ return false;
+ return true;
+}
+
static struct doc_section *new_section(struct list_head *list,
const char *function,
const char *type)
{
- struct doc_section *d = talloc(list, struct doc_section);
+ struct doc_section *d;
+ char *lowertype;
+ unsigned int i;
+
+ /* If previous section was empty, delete it. */
+ d = list_tail(list, struct doc_section, list);
+ if (d && empty_section(d)) {
+ list_del(&d->list);
+ talloc_free(d);
+ }
+
+ d = talloc(list, struct doc_section);
d->function = function;
- d->type = type;
+ lowertype = talloc_size(d, strlen(type) + 1);
+ /* Canonicalize type to lower case. */
+ for (i = 0; i < strlen(type)+1; i++)
+ lowertype[i] = tolower(type[i]);
+ d->type = lowertype;
d->lines = NULL;
d->num_lines = 0;
+
list_add_tail(list, &d->list);
return d;
}
if (!streq(d->function, function))
continue;
}
- if (strcasecmp(type, "all") == 0)
+ if (streq(type, "all"))
printf("%s:\n", d->type);
- else if (strcasecmp(d->type, type) != 0)
+ else if (!streq(d->type, type))
continue;
for (j = 0; j < d->num_lines; j++)