X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/6d6d850c7b03b500c451e2a9670786112f222ff8..5b1d0032b0eb6f4a347c0c2cfdbe6e4bb4f959ab:/bk_xhtml.c diff --git a/bk_xhtml.c b/bk_xhtml.c index cad2e8e..4d5069a 100644 --- a/bk_xhtml.c +++ b/bk_xhtml.c @@ -192,19 +192,19 @@ static xhtmlconfig xhtml_configure(paragraph *source) { if (!ustricmp(source->keyword, L"xhtml-contents-filename")) { sfree(ret.contents_filename); - ret.contents_filename = utoa_dup(uadv(source->keyword)); + ret.contents_filename = dupstr(adv(source->origkeyword)); } else if (!ustricmp(source->keyword, L"xhtml-single-filename")) { sfree(ret.single_filename); - ret.single_filename = utoa_dup(uadv(source->keyword)); + ret.single_filename = dupstr(adv(source->origkeyword)); } else if (!ustricmp(source->keyword, L"xhtml-index-filename")) { sfree(ret.index_filename); - ret.index_filename = utoa_dup(uadv(source->keyword)); + ret.index_filename = dupstr(adv(source->origkeyword)); } else if (!ustricmp(source->keyword, L"xhtml-template-filename")) { sfree(ret.template_filename); - ret.template_filename = utoa_dup(uadv(source->keyword)); + ret.template_filename = dupstr(adv(source->origkeyword)); } else if (!ustricmp(source->keyword, L"xhtml-template-fragment")) { sfree(ret.template_fragment); - ret.template_fragment = utoa_dup(uadv(source->keyword)); + ret.template_fragment = utoa_dup(uadv(source->keyword), CS_ASCII); } else if (!ustricmp(source->keyword, L"xhtml-contents-depth-0")) { ret.contents_depth[0] = utoi(uadv(source->keyword)); } else if (!ustricmp(source->keyword, L"xhtml-contents-depth-1")) { @@ -304,45 +304,12 @@ paragraph *xhtml_config_filename(char *filename) * \cfg{xhtml-leaf-level}{0}; the rationale being that the user * wants their output _in that file_. */ + paragraph *p, *q; - paragraph *p[2]; - int i, len; - wchar_t *ufilename, *up; - - for (i = 0; i < 2; i++) { - p[i] = mknew(paragraph); - memset(p[i], 0, sizeof(*p[i])); - p[i]->type = para_Config; - p[i]->next = NULL; - p[i]->fpos.filename = ""; - p[i]->fpos.line = p[i]->fpos.col = -1; - } - - ufilename = ufroma_dup(filename); - len = ustrlen(ufilename) + 2 + lenof(L"xhtml-single-filename"); - p[0]->keyword = mknewa(wchar_t, len); - up = p[0]->keyword; - ustrcpy(up, L"xhtml-single-filename"); - up = uadv(up); - ustrcpy(up, ufilename); - up = uadv(up); - *up = L'\0'; - assert(up - p[0]->keyword < len); - sfree(ufilename); - - len = lenof(L"xhtml-leaf-level") + lenof(L"0") + 1; - p[1]->keyword = mknewa(wchar_t, len); - up = p[1]->keyword; - ustrcpy(up, L"xhtml-leaf-level"); - up = uadv(up); - ustrcpy(up, L"0"); - up = uadv(up); - *up = L'\0'; - assert(up - p[1]->keyword < len); - - p[0]->next = p[1]; - - return p[0]; + p = cmdline_cfg_simple("xhtml-single-filename", filename, NULL); + q = cmdline_cfg_simple("xhtml-leaf-level", "0", NULL); + p->next = q; + return p; } static xhtmlsection *xhtml_new_section(xhtmlsection *last) @@ -744,13 +711,15 @@ static void xhtml_free_file(xhtmlfile* xfile) * Main function. */ void xhtml_backend(paragraph *sourceform, keywordlist *in_keywords, - indexdata *in_idx) + indexdata *in_idx, void *unused) { /* int i;*/ indexentry *ientry; int ti; xhtmlsection *xsect; + IGNORE(unused); + sourceparas = sourceform; conf = xhtml_configure(sourceform); keywords = in_keywords; @@ -842,13 +811,13 @@ static void xhtml_donavlinks(FILE *fp, xhtmlfile *file) if (xhtml_last_file==NULL) { fprintf(fp, "Previous | "); } else { - fprintf(fp, "Previous | ", xhtml_last_file->filename); + fprintf(fp, "Previous | ", xhtml_last_file->filename); } - fprintf(fp, "Contents | ", conf.contents_filename); + fprintf(fp, "Contents | ", conf.contents_filename); if (file == NULL) { fprintf(fp, "Index | "); } else { - fprintf(fp, "Index | ", conf.index_filename); + fprintf(fp, "Index | ", conf.index_filename); } if (file != NULL) { /* otherwise we're doing nav links for the index */ if (xhtml_next_file==NULL) @@ -862,10 +831,10 @@ static void xhtml_donavlinks(FILE *fp, xhtmlfile *file) if (file==NULL) { /* index, so no next file */ fprintf(fp, "Next "); } else { - fprintf(fp, "Next", conf.index_filename); + fprintf(fp, "Next", conf.index_filename); } } else { - fprintf(fp, "Next", xhtml_next_file->filename); + fprintf(fp, "Next", xhtml_next_file->filename); } fprintf(fp, "

\n"); } @@ -894,7 +863,7 @@ static void xhtml_do_index_body(FILE *fp) for (i=0; insection; i++) { xhtmlsection *sect = xi->sections[i]; if (sect) { - fprintf(fp, "", sect->file->filename, sect->fragment); + fprintf(fp, "", sect->file->filename, sect->fragment); if (sect->para->kwtext) { xhtml_para(fp, sect->para->kwtext, FALSE); } else if (sect->para->words) { @@ -913,7 +882,8 @@ static void xhtml_do_index_body(FILE *fp) } static void xhtml_do_index() { - word temp_word = { NULL, NULL, word_Normal, 0, 0, L"Index", { NULL, 0, 0} }; + word temp_word = { NULL, NULL, word_Normal, 0, 0, L"Index", + { NULL, 0, 0}, NULL }; FILE *fp = fopen(conf.index_filename, "w"); if (fp==NULL) @@ -1364,7 +1334,7 @@ static void xhtml_doheader(FILE *fp, word *title) { fprintf(fp, "\n"); - fprintf(fp, "\n\n\n"); + fprintf(fp, "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n<title>"); if (title==NULL) fprintf(fp, "The thing with no name!"); else @@ -1648,7 +1618,8 @@ static void xhtml_rdaddwc(rdstringc *rs, word *text, word *end, int indexable) { rdaddsc(rs, "<code>"); if (removeattr(text->type) == word_Normal) { - if (xhtml_convert(text->text, 0, &c, TRUE)) /* spaces in the word are hard */ + if (xhtml_convert(text->text, 0, &c, TRUE) || !text->alt) + /* spaces in the word are hard */ rdaddsc(rs, c); else xhtml_rdaddwc(rs, text->alt, NULL, indexable);