diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2021-03-30 17:16:55 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2021-03-30 17:16:55 +0000 |
commit | 6e220064abb2f2f7e5756999097a6db9c2064787 (patch) | |
tree | e10e613171ee6a84423ddbe80fd01bef27730806 /term_tag.c | |
parent | 097ebd78c83b64e46747401071cc01d772a3d1cd (diff) | |
download | mandoc-6e220064abb2f2f7e5756999097a6db9c2064787.tar.gz mandoc-6e220064abb2f2f7e5756999097a6db9c2064787.tar.zst mandoc-6e220064abb2f2f7e5756999097a6db9c2064787.zip |
Append .html suffix to temporary files enabling browsers to recognise it.
Occasionally one might read a manual page in a webbrowser, e.g.
"MANPAGER=firefox man -T html jq", however temporary files created for
pagers lack file extensions and most web browsers are unable to detect a
file's content without it.
Special case mandoc(1)'s HTML output format by appending the ".html" suffix
to file names such that browsers will actually render HTML as such instead
of showing it as plain text.
Idea and patch from kn@, with minor help from me.
Diffstat (limited to 'term_tag.c')
-rw-r--r-- | term_tag.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -1,4 +1,4 @@ -/* $Id: term_tag.c,v 1.5 2020/07/21 15:10:01 schwarze Exp $ */ +/* $Id: term_tag.c,v 1.6 2021/03/30 17:16:55 schwarze Exp $ */ /* * Copyright (c) 2015,2016,2018,2019,2020 Ingo Schwarze <schwarze@openbsd.org> * @@ -47,7 +47,8 @@ static struct tag_files tag_files; * but for simplicity, create it anyway. */ struct tag_files * -term_tag_init(const char *outfilename, const char *tagfilename) +term_tag_init(const char *outfilename, const char *suffix, + const char *tagfilename) { struct sigaction sa; int ofd; /* In /tmp/, dup(2)ed to stdout. */ @@ -85,9 +86,9 @@ term_tag_init(const char *outfilename, const char *tagfilename) /* Create both temporary output files. */ if (outfilename == NULL) { - (void)strlcpy(tag_files.ofn, "/tmp/man.XXXXXXXXXX", - sizeof(tag_files.ofn)); - if ((ofd = mkstemp(tag_files.ofn)) == -1) { + (void)snprintf(tag_files.ofn, sizeof(tag_files.ofn), + "/tmp/man.XXXXXXXXXX%s", suffix); + if ((ofd = mkstemps(tag_files.ofn, strlen(suffix))) == -1) { mandoc_msg(MANDOCERR_MKSTEMP, 0, 0, "%s: %s", tag_files.ofn, strerror(errno)); goto fail; |