From 93d764498895e4cc9bdf14ac4c0cb41431946066 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 9 Jun 2023 10:32:57 +0200 Subject: yat2m: Add option --gnupgorg --- doc/yat2m.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/doc/yat2m.c b/doc/yat2m.c index e5b81b1..0e368fc 100644 --- a/doc/yat2m.c +++ b/doc/yat2m.c @@ -179,6 +179,7 @@ static int verbose; static int quiet; static int debug; static int htmlmode; +static int gnupgorgmode; static const char *opt_source; static const char *opt_release; static const char *opt_date; @@ -910,6 +911,7 @@ add_content (const char *sectname, char *line, int verbatim) line_buffer_t lb; char *linebuffer = NULL; char *src, *dst; + const char *s; if (verbatim && htmlmode) { @@ -953,6 +955,31 @@ add_content (const char *sectname, char *line, int verbatim) line = linebuffer; } } + else if (htmlmode) + { + size_t n0, n1; + + for (s=line, n0=n1=0; *s; s++, n0++) + if (*s == '<' || *s == '>') + n1 += 3; + else if (*s == '&') + n1 += 4; + if (n1) + { + dst = linebuffer = xmalloc (n0 + n1 + 1); + for (s=line; *s; s++) + if (*s == '<') + strcpy (dst, "<"), dst += 4; + else if (*s == '>') + strcpy (dst, ">"), dst += 4; + else if (*s == '&') + strcpy (dst, "&"), dst += 5; + else + *dst++ = *s; + *dst = 0; + line = linebuffer; + } + } sect = get_section_buffer (sectname); if (sect->last_line && !sect->last_line->verbatim == !verbatim) @@ -1037,12 +1064,35 @@ write_th (FILE *fp) if (htmlmode) { - fputs ("\n" - "\n", fp); + if (gnupgorgmode) + { + fputs + ("\n" + "\n" + "\n", fp); + } + else + fputs ("\n", fp); + fputs ("\n", fp); fprintf (fp, " %s(%s)\n", name, p); - fputs (default_css, fp); + if (gnupgorgmode) + { + fputs ("\n", fp); + fputs ("\n" + "\n", fp); + } + else + fputs (default_css, fp); fputs ("\n" "\n", fp); + if (gnupgorgmode) + fputs ("
\n" + "
\n", fp); fputs ("
\n", fp); } @@ -1104,6 +1154,9 @@ write_bottom (FILE *fp) "

\n", opt_release, isodatestring (), name, p); fputs ("
\n", fp); + if (gnupgorgmode) + fputs ("
\n" + "
\n", fp); fputs ("\n" "\n", fp); @@ -2107,6 +2160,7 @@ main (int argc, char **argv) " --date EPOCH use EPOCH as publication date\n" " --store write output using @manpage name\n" " --select NAME only output pages with @manpage NAME\n" + " --gnupgorg prepare for use at www.gnupg.org\n" " --verbose enable extra informational output\n" " --debug enable additional debug output\n" " --help display this help and exit\n" @@ -2130,6 +2184,11 @@ main (int argc, char **argv) htmlmode = 1; argc--; argv++; } + else if (!strcmp (*argv, "--gnupgorg")) + { + gnupgorgmode = 1; + argc--; argv++; + } else if (!strcmp (*argv, "--verbose")) { verbose = 1; -- cgit v1.2.3