diff options
author | Joerg Sonnenberger <joerg@netbsd.org> | 2014-01-05 19:10:56 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@netbsd.org> | 2014-01-05 19:10:56 +0000 |
commit | 5e614e747c24e529f84dbfb18721534f909128e9 (patch) | |
tree | 6b95f33544f611ed2bc6889a77a346526e7c4d0e | |
parent | bfc2a1a7b08ccfe41610d07abb12b2eca5139716 (diff) | |
download | mandoc-5e614e747c24e529f84dbfb18721534f909128e9.tar.gz |
Tag functions with format strings as arguments as printf-like.
Fix one case where a non-literal is used as format string.
Fix another case where a variable is formatted using the wrong type.
-rw-r--r-- | html.c | 2 | ||||
-rw-r--r-- | html.h | 3 | ||||
-rw-r--r-- | libmandoc.h | 3 | ||||
-rw-r--r-- | term_ps.c | 5 |
4 files changed, 11 insertions, 2 deletions
@@ -722,7 +722,7 @@ buffmt_man(struct html *h, bufcat(h, sec ? sec : "1"); break; case('N'): - bufcat_fmt(h, name); + bufcat_fmt(h, "%s", name); break; default: bufncat(h, p, 2); @@ -147,6 +147,9 @@ void print_tblclose(struct html *); void print_tbl(struct html *, const struct tbl_span *); void print_eqn(struct html *, const struct eqn *); +#if __GNUC__ - 0 >= 4 +__attribute__((__format__ (__printf__, 2, 3))) +#endif void bufcat_fmt(struct html *, const char *, ...); void bufcat(struct html *, const char *); void bufcat_id(struct html *, const char *); diff --git a/libmandoc.h b/libmandoc.h index 198184a0..fdffe625 100644 --- a/libmandoc.h +++ b/libmandoc.h @@ -38,6 +38,9 @@ struct man; void mandoc_msg(enum mandocerr, struct mparse *, int, int, const char *); +#if __GNUC__ - 0 >= 4 +__attribute__((__format__ (__printf__, 5, 6))) +#endif void mandoc_vmsg(enum mandocerr, struct mparse *, int, int, const char *, ...); char *mandoc_getarg(struct mparse *, char **, int, int *); @@ -97,6 +97,9 @@ static void ps_growbuf(struct termp *, size_t); static void ps_letter(struct termp *, int); static void ps_pclose(struct termp *); static void ps_pletter(struct termp *, int); +#if __GNUC__ - 0 >= 4 +__attribute__((__format__ (__printf__, 2, 3))) +#endif static void ps_printf(struct termp *, const char *, ...); static void ps_putchar(struct termp *, char); static void ps_setfont(struct termp *, enum termfont); @@ -824,7 +827,7 @@ ps_begin(struct termp *p) ps_printf(p, "<<\n"); ps_printf(p, "/Type /Font\n"); ps_printf(p, "/Subtype /Type1\n"); - ps_printf(p, "/Name /F%zu\n", i); + ps_printf(p, "/Name /F%d\n", i); ps_printf(p, "/BaseFont /%s\n", fonts[i].name); ps_printf(p, ">>\n"); } |