From: Rocco Rutte Date: Sun, 31 Aug 2008 16:25:48 +0000 (+0200) Subject: makedoc: Escape <>& in environments X-Git-Tag: mutt-1-5-19-rel~136 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6e64918e4a620faa9f7dde8a433a078af28a2c8c;p=mutt makedoc: Escape <>& in environments --- diff --git a/doc/makedoc.c b/doc/makedoc.c index ba82bdfd..ae34d6b7 100644 --- a/doc/makedoc.c +++ b/doc/makedoc.c @@ -117,8 +117,8 @@ static void print_confline (const char *, int, const char *, FILE *); static void handle_confline (char *, FILE *); static void makedoc (FILE *, FILE *); static void pretty_default (char *, size_t, const char *, int); -static int sgml_fputc (int, FILE *); -static int sgml_fputs (const char *, FILE *); +static int sgml_fputc (int, FILE *, int); +static int sgml_fputs (const char *, FILE *, int); static int sgml_id_fputs (const char *, FILE *); int main (int argc, char *argv[]) @@ -589,38 +589,38 @@ static void sgml_print_strval (const char *v, FILE *out) if (*v < ' ' || *v & 0x80) { char_to_escape (buff, (unsigned int) *v); - sgml_fputs (buff, out); + sgml_fputs (buff, out, 1); continue; } - sgml_fputc ((unsigned int) *v, out); + sgml_fputc ((unsigned int) *v, out, 1); } } -static int sgml_fputc (int c, FILE *out) +static int sgml_fputc (int c, FILE *out, int full) { switch (c) { case '<': return fputs ("<", out); case '>': return fputs (">", out); - case '$': return fputs ("$", out); - case '_': return fputs ("_", out); - case '%': return fputs ("%", out); + case '$': if (full) return fputs ("$", out); + case '_': if (full) return fputs ("_", out); + case '%': if (full) return fputs ("%", out); case '&': return fputs ("&", out); - case '\\': return fputs ("\", out); - case '"': return fputs (""", out); - case '[': return fputs ("[", out); - case ']': return fputs ("]", out); - case '~': return fputs ("˜", out); + case '\\': if (full) return fputs ("\", out); + case '"': if (full) return fputs (""", out); + case '[': if (full) return fputs ("[", out); + case ']': if (full) return fputs ("]", out); + case '~': if (full) return fputs ("˜", out); default: return fputc (c, out); } } -static int sgml_fputs (const char *s, FILE *out) +static int sgml_fputs (const char *s, FILE *out, int full) { for (; *s; s++) - if (sgml_fputc ((unsigned int) *s, out) == EOF) + if (sgml_fputc ((unsigned int) *s, out, full) == EOF) return EOF; - + return 0; } @@ -707,7 +707,7 @@ static void print_confline (const char *varname, int type, const char *val, FILE fputs ("\n\n", out); - sgml_fputs (varname, out); + sgml_fputs (varname, out, 1); fprintf (out, "\nType: %s", type2human (type)); if (type == DT_STR || type == DT_RX || type == DT_ADDR || type == DT_PATH) @@ -1183,7 +1183,7 @@ static int print_it (int special, char *str, FILE *out, int docstat) case SP_STR: { if (docstat & D_TAB) - fputs (str, out); + sgml_fputs (str, out, 0); else { while (*str) @@ -1201,7 +1201,7 @@ static int print_it (int special, char *str, FILE *out, int docstat) str++; } else - sgml_fputc (*str, out); + sgml_fputc (*str, out, 1); } } } @@ -1235,7 +1235,7 @@ void print_ref (FILE *out, int output_dollar, const char *ref) fputs ("\">", out); if (output_dollar) fputs ("$", out); - sgml_fputs (ref, out); + sgml_fputs (ref, out, 1); fputs ("", out); break;