summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2004-04-01 17:22:56 +0000
committerSimon Tatham <anakin@pobox.com>2004-04-01 17:22:56 +0000
commit02299a79f1d552580bf7b660251f79ec7f479a23 (patch)
treec23cc603f6acca910facef31a2b79c3794da5cab /main.c
parentaf770784f1153b346a550363406c57b58d4c2552 (diff)
downloadhalibut-02299a79f1d552580bf7b660251f79ec7f479a23.zip
halibut-02299a79f1d552580bf7b660251f79ec7f479a23.tar.gz
halibut-02299a79f1d552580bf7b660251f79ec7f479a23.tar.bz2
halibut-02299a79f1d552580bf7b660251f79ec7f479a23.tar.xz
Arrange a mechanism whereby each backend can be passed a filename
from its command-line option (`--text=foo.txt') and automatically convert it into one or more notional \cfg directives. In the HTML case this mechanism enables single-file mode as well as setting the filename. [originally from svn r4018]
Diffstat (limited to 'main.c')
-rw-r--r--main.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/main.c b/main.c
index 3d72d05..b509928 100644
--- a/main.c
+++ b/main.c
@@ -14,15 +14,16 @@ static void dbg_prtkws(keywordlist *kws);
static const struct backend {
char *name;
void (*func)(paragraph *, keywordlist *, indexdata *);
+ paragraph *(*filename)(char *filename);
int bitfield;
} backends[] = {
- {"text", text_backend, 0x0001},
- {"xhtml", xhtml_backend, 0x0002},
- {"html", xhtml_backend, 0x0002},
- {"hlp", whlp_backend, 0x0004},
- {"whlp", whlp_backend, 0x0004},
- {"winhelp", whlp_backend, 0x0004},
- {"man", man_backend, 0x0008},
+ {"text", text_backend, text_config_filename, 0x0001},
+ {"xhtml", xhtml_backend, xhtml_config_filename, 0x0002},
+ {"html", xhtml_backend, xhtml_config_filename, 0x0002},
+ {"hlp", whlp_backend, whlp_config_filename, 0x0004},
+ {"whlp", whlp_backend, whlp_config_filename, 0x0004},
+ {"winhelp", whlp_backend, whlp_config_filename, 0x0004},
+ {"man", man_backend, man_config_filename, 0x0008},
};
int main(int argc, char **argv) {
@@ -83,6 +84,17 @@ int main(int argc, char **argv) {
for (k = 0; k < (int)lenof(backends); k++)
if (!strcmp(opt+1, backends[k].name)) {
backendbits |= backends[k].bitfield;
+ if (val) {
+ paragraph *p = backends[k].filename(val);
+ assert(p);
+ if (cfg_tail)
+ cfg_tail->next = p;
+ else
+ cfg = p;
+ while (p->next)
+ p = p->next;
+ cfg_tail = p;
+ }
break;
}
if (k < (int)lenof(backends)) {