X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/halibut/blobdiff_plain/2dcd218d343644f65b34bf6075267c630a228cc7..0041ffdbc8d0dc2db4a7c9dadccfc1a8f518d1d3:/bk_html.c diff --git a/bk_html.c b/bk_html.c index 0c66eb7..90800f1 100644 --- a/bk_html.c +++ b/bk_html.c @@ -37,7 +37,7 @@ (p)->type == para_Title ? -1 : 0 ) typedef struct { - int just_numbers; + int number_at_all, just_numbers; wchar_t *number_suffix; } sectlevel; @@ -248,10 +248,12 @@ static htmlconfig html_configure(paragraph *source) { */ ret.leaf_level = 2; ret.achapter.just_numbers = FALSE; + ret.achapter.number_at_all = TRUE; ret.achapter.number_suffix = L": "; ret.nasect = 1; ret.asect = snewn(ret.nasect, sectlevel); ret.asect[0].just_numbers = TRUE; + ret.asect[0].number_at_all = TRUE; ret.asect[0].number_suffix = L" "; ret.ncdepths = 0; ret.contents_depths = 0; @@ -382,6 +384,8 @@ static htmlconfig html_configure(paragraph *source) { error(err_cfginsufarg, &p->fpos, p->origkeyword, 1); } else if (!ustricmp(k, L"html-chapter-numeric")) { ret.achapter.just_numbers = utob(uadv(k)); + } else if (!ustricmp(k, L"html-chapter-shownumber")) { + ret.achapter.number_at_all = utob(uadv(k)); } else if (!ustricmp(k, L"html-suppress-navlinks")) { ret.navlinks = !utob(uadv(k)); } else if (!ustricmp(k, L"html-rellinks")) { @@ -411,6 +415,21 @@ static htmlconfig html_configure(paragraph *source) { ret.nasect = n+1; } ret.asect[n].just_numbers = utob(q); + } else if (!ustricmp(k, L"html-section-shownumber")) { + wchar_t *q = uadv(k); + int n = 0; + if (uisdigit(*q)) { + n = utoi(q); + q = uadv(q); + } + if (n >= ret.nasect) { + int i; + ret.asect = sresize(ret.asect, n+1, sectlevel); + for (i = ret.nasect; i <= n; i++) + ret.asect[i] = ret.asect[ret.nasect-1]; + ret.nasect = n+1; + } + ret.asect[n].number_at_all = utob(q); } else if (!ustricmp(k, L"html-section-suffix")) { wchar_t *q = uadv(k); int n = 0; @@ -865,7 +884,10 @@ void html_backend(paragraph *sourceform, keywordlist *keywords, #define listname(lt) ( (lt)==UL ? "ul" : (lt)==OL ? "ol" : "dl" ) #define itemname(lt) ( (lt)==LI ? "li" : (lt)==DT ? "dt" : "dd" ) - ho.fp = fopen(f->filename, "w"); + if (!strcmp(f->filename, "-")) + ho.fp = stdout; + else + ho.fp = fopen(f->filename, "w"); if (!ho.fp) error(err_cantopenw, f->filename); @@ -2488,7 +2510,7 @@ static void html_text_limit_internal(htmloutput *ho, wchar_t const *text, static void cleanup(htmloutput *ho) { return_to_neutral(ho); - if (ho->fp) + if (ho->fp && ho->fp != stdout) fclose(ho->fp); } @@ -2766,7 +2788,7 @@ static void html_section_title(htmloutput *ho, htmlsect *s, htmlfile *thisfile, else sl = &cfg->asect[cfg->nasect-1]; - if (!sl) + if (!sl || !sl->number_at_all) number = NULL; else if (sl->just_numbers) number = s->title->kwtext2;