version 1.12, 2011/07/01 09:11:35 |
version 1.14, 2011/07/01 10:46:32 |
|
|
const struct mdoc_node *n, \ |
const struct mdoc_node *n, \ |
const struct mdoc_meta *m |
const struct mdoc_meta *m |
|
|
|
static void buf_appendmdoc(struct buf *, |
|
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 524 buf_append(struct buf *buf, const char *cp) |
|
Line 526 buf_append(struct buf *buf, const char *cp) |
|
buf_appendb(buf, cp, sz + 1); |
buf_appendb(buf, cp, sz + 1); |
} |
} |
|
|
|
/* |
|
* Recursively add all text from a given node. |
|
* This is optimised for general mdoc nodes in this context, which do |
|
* not consist of subexpressions and having a recursive call for n->next |
|
* 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 |
|
buf_appendmdoc(struct buf *buf, const struct mdoc_node *n, int f) |
|
{ |
|
|
|
for ( ; n; n = n->next) { |
|
if (n->child) |
|
buf_appendmdoc(buf, n->child, f); |
|
|
|
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); |
|
|
|
} |
|
} |
|
|
/* ARGSUSED */ |
/* ARGSUSED */ |
static void |
static void |
pmdoc_An(MDOC_ARGS) |
pmdoc_An(MDOC_ARGS) |
Line 532 pmdoc_An(MDOC_ARGS) |
|
Line 561 pmdoc_An(MDOC_ARGS) |
|
if (SEC_AUTHORS != n->sec) |
if (SEC_AUTHORS != n->sec) |
return; |
return; |
|
|
for (n = n->child; n; n = n->next) |
buf_appendmdoc(buf, n->child, 0); |
if (MDOC_TEXT == n->type) |
|
buf_append(buf, n->string); |
|
|
|
hash_put(hash, buf, TYPE_AUTHOR); |
hash_put(hash, buf, TYPE_AUTHOR); |
} |
} |
|
|
Line 593 pmdoc_Cd(MDOC_ARGS) |
|
Line 619 pmdoc_Cd(MDOC_ARGS) |
|
if (SEC_SYNOPSIS != n->sec) |
if (SEC_SYNOPSIS != n->sec) |
return; |
return; |
|
|
for (n = n->child; n; n = n->next) |
buf_appendmdoc(buf, n->child, 0); |
if (MDOC_TEXT == n->type) |
|
buf_append(buf, n->string); |
|
|
|
hash_put(hash, buf, TYPE_CONFIG); |
hash_put(hash, buf, TYPE_CONFIG); |
} |
} |
|
|
Line 729 pmdoc_Fo(MDOC_ARGS) |
|
Line 752 pmdoc_Fo(MDOC_ARGS) |
|
static void |
static void |
pmdoc_Nd(MDOC_ARGS) |
pmdoc_Nd(MDOC_ARGS) |
{ |
{ |
int first; |
|
size_t sz; |
|
|
|
for (first = 1, n = n->child; n; n = n->next) { |
|
if (MDOC_TEXT != n->type) |
|
continue; |
|
|
|
if (first) { |
if (MDOC_BODY != n->type) |
sz = strlen(n->string) + 1; |
return; |
buf_appendb(dbuf, n->string, sz); |
|
buf_appendb(buf, n->string, sz); |
|
} else { |
|
buf_append(dbuf, n->string); |
|
buf_append(buf, n->string); |
|
} |
|
|
|
first = 0; |
buf_appendmdoc(dbuf, n->child, 1); |
} |
buf_appendmdoc(buf, n->child, 0); |
|
|
hash_put(hash, buf, TYPE_DESC); |
hash_put(hash, buf, TYPE_DESC); |
} |
} |
Line 759 pmdoc_Pa(MDOC_ARGS) |
|
Line 770 pmdoc_Pa(MDOC_ARGS) |
|
if (SEC_FILES != n->sec) |
if (SEC_FILES != n->sec) |
return; |
return; |
|
|
for (n = n->child; n; n = n->next) |
buf_appendmdoc(buf, n->child, 0); |
if (MDOC_TEXT == n->type) |
|
buf_append(buf, n->string); |
|
|
|
hash_put(hash, buf, TYPE_PATH); |
hash_put(hash, buf, TYPE_PATH); |
} |
} |
|
|
Line 772 pmdoc_Nm(MDOC_ARGS) |
|
Line 780 pmdoc_Nm(MDOC_ARGS) |
|
{ |
{ |
|
|
if (SEC_NAME == n->sec) { |
if (SEC_NAME == n->sec) { |
for (n = n->child; n; n = n->next) |
buf_appendmdoc(buf, n->child, 0); |
if (MDOC_TEXT == n->type) |
|
buf_append(buf, n->string); |
|
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 783 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); |
|
|
for (n = n->child; n; n = n->next) |
buf_appendmdoc(buf, n->child, 0); |
if (MDOC_TEXT == n->type) |
|
buf_append(buf, n->string); |
|
|
|
hash_put(hash, buf, TYPE_UTILITY); |
hash_put(hash, buf, TYPE_UTILITY); |
} |
} |
|
|