version 1.13, 2011/07/01 10:17:24 |
version 1.14, 2011/07/01 10:46:32 |
|
|
const struct mdoc_meta *m |
const struct mdoc_meta *m |
|
|
static void buf_appendmdoc(struct buf *, |
static void buf_appendmdoc(struct buf *, |
const struct mdoc_node *); |
const struct mdoc_node *, int); |
static void buf_append(struct buf *, const char *); |
static void buf_append(struct buf *, const char *); |
static void buf_appendb(struct buf *, |
static void buf_appendb(struct buf *, |
const void *, size_t); |
const void *, size_t); |
Line 531 buf_append(struct buf *buf, const char *cp) |
|
Line 531 buf_append(struct buf *buf, const char *cp) |
|
* This is optimised for general mdoc nodes in this context, which do |
* This is optimised for general mdoc nodes in this context, which do |
* not consist of subexpressions and having a recursive call for n->next |
* not consist of subexpressions and having a recursive call for n->next |
* would be wasteful. |
* would be wasteful. |
|
* The "f" variable should be 0 unless called from pmdoc_Nd for the |
|
* description buffer, which does not start at the beginning of the |
|
* buffer. |
*/ |
*/ |
static void |
static void |
buf_appendmdoc(struct buf *buf, const struct mdoc_node *n) |
buf_appendmdoc(struct buf *buf, const struct mdoc_node *n, int f) |
{ |
{ |
|
|
for ( ; n; n = n->next) { |
for ( ; n; n = n->next) { |
if (n->child) |
if (n->child) |
buf_appendmdoc(buf, n->child); |
buf_appendmdoc(buf, n->child, f); |
if (MDOC_TEXT == n->type) |
|
|
if (MDOC_TEXT == n->type && f) { |
|
f = 0; |
|
buf_appendb(buf, n->string, |
|
strlen(n->string) + 1); |
|
} else if (MDOC_TEXT == n->type) |
buf_append(buf, n->string); |
buf_append(buf, n->string); |
|
|
} |
} |
} |
} |
|
|
Line 552 pmdoc_An(MDOC_ARGS) |
|
Line 561 pmdoc_An(MDOC_ARGS) |
|
if (SEC_AUTHORS != n->sec) |
if (SEC_AUTHORS != n->sec) |
return; |
return; |
|
|
buf_appendmdoc(buf, n->child); |
buf_appendmdoc(buf, n->child, 0); |
hash_put(hash, buf, TYPE_AUTHOR); |
hash_put(hash, buf, TYPE_AUTHOR); |
} |
} |
|
|
Line 610 pmdoc_Cd(MDOC_ARGS) |
|
Line 619 pmdoc_Cd(MDOC_ARGS) |
|
if (SEC_SYNOPSIS != n->sec) |
if (SEC_SYNOPSIS != n->sec) |
return; |
return; |
|
|
buf_appendmdoc(buf, n->child); |
buf_appendmdoc(buf, n->child, 0); |
hash_put(hash, buf, TYPE_CONFIG); |
hash_put(hash, buf, TYPE_CONFIG); |
} |
} |
|
|
Line 743 pmdoc_Fo(MDOC_ARGS) |
|
Line 752 pmdoc_Fo(MDOC_ARGS) |
|
static void |
static void |
pmdoc_Nd(MDOC_ARGS) |
pmdoc_Nd(MDOC_ARGS) |
{ |
{ |
size_t sz; |
|
|
|
if (MDOC_BODY != n->type) |
if (MDOC_BODY != n->type) |
return; |
return; |
else if (NULL == (n = n->child)) |
|
return; |
|
|
|
/* FIXME: don't assume this. */ |
buf_appendmdoc(dbuf, n->child, 1); |
assert(MDOC_TEXT == n->type); |
buf_appendmdoc(buf, n->child, 0); |
|
|
sz = strlen(n->string) + 1; |
|
buf_appendb(dbuf, n->string, sz); |
|
buf_appendb(buf, n->string, sz); |
|
|
|
buf_appendmdoc(dbuf, n->next); |
|
buf_appendmdoc(buf, n->next); |
|
|
|
hash_put(hash, buf, TYPE_DESC); |
hash_put(hash, buf, TYPE_DESC); |
} |
} |
|
|
Line 771 pmdoc_Pa(MDOC_ARGS) |
|
Line 770 pmdoc_Pa(MDOC_ARGS) |
|
if (SEC_FILES != n->sec) |
if (SEC_FILES != n->sec) |
return; |
return; |
|
|
buf_appendmdoc(buf, n->child); |
buf_appendmdoc(buf, n->child, 0); |
hash_put(hash, buf, TYPE_PATH); |
hash_put(hash, buf, TYPE_PATH); |
} |
} |
|
|
Line 781 pmdoc_Nm(MDOC_ARGS) |
|
Line 780 pmdoc_Nm(MDOC_ARGS) |
|
{ |
{ |
|
|
if (SEC_NAME == n->sec) { |
if (SEC_NAME == n->sec) { |
buf_appendmdoc(buf, n->child); |
buf_appendmdoc(buf, n->child, 0); |
hash_put(hash, buf, TYPE_NAME); |
hash_put(hash, buf, TYPE_NAME); |
return; |
return; |
} else if (SEC_SYNOPSIS != n->sec || MDOC_HEAD != n->type) |
} else if (SEC_SYNOPSIS != n->sec || MDOC_HEAD != n->type) |
Line 790 pmdoc_Nm(MDOC_ARGS) |
|
Line 789 pmdoc_Nm(MDOC_ARGS) |
|
if (NULL == n->child) |
if (NULL == n->child) |
buf_append(buf, m->name); |
buf_append(buf, m->name); |
|
|
buf_appendmdoc(buf, n->child); |
buf_appendmdoc(buf, n->child, 0); |
hash_put(hash, buf, TYPE_UTILITY); |
hash_put(hash, buf, TYPE_UTILITY); |
} |
} |
|
|