diff options
| author | Simon Tatham <anakin@pobox.com> | 2004-04-01 17:22:56 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2004-04-01 17:22:56 +0000 |
| commit | 02299a79f1d552580bf7b660251f79ec7f479a23 (patch) | |
| tree | c23cc603f6acca910facef31a2b79c3794da5cab /main.c | |
| parent | af770784f1153b346a550363406c57b58d4c2552 (diff) | |
| download | halibut-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.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -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)) { |