From 468dec75a5455563610bc8ec31991caa71484096 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 29 May 2014 10:49:55 -0700 Subject: [PATCH] Fix non-literal string format warnings The lnstat program was building a format string, then using it. This was safe, but simpler to just use format character * to get width. --- misc/lnstat.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/misc/lnstat.c b/misc/lnstat.c index d6415efbb..30ac8f53a 100644 --- a/misc/lnstat.c +++ b/misc/lnstat.c @@ -98,11 +98,8 @@ static void print_line(FILE *of, const struct lnstat_file *lnstat_files, for (i = 0; i < fp->num; i++) { const struct lnstat_field *lf = fp->params[i].lf; - char formatbuf[255]; - snprintf(formatbuf, sizeof(formatbuf)-1, "%%%ulu|", - fp->params[i].print.width); - fprintf(of, formatbuf, lf->result); + fprintf(of, "%*lu|", fp->params[i].print.width, lf->result); } fputc('\n', of); } @@ -198,21 +195,20 @@ static struct table_hdr *build_hdr_string(struct lnstat_file *lnstat_files, for (i = 0; i < fps->num; i++) { char *cname, *fname = fps->params[i].lf->name; - char fmt[12]; unsigned int width = fps->params[i].print.width; - snprintf(fmt, sizeof(fmt)-1, "%%%u.%us|", width, width); - - snprintf(th.hdr[0]+ofs, width+2, fmt, + snprintf(th.hdr[0]+ofs, width+2, "%*.*s|", width, width, fps->params[i].lf->file->basename); cname = fname; for (h = 1; h < HDR_LINES; h++) { if (cname - fname >= strlen(fname)) - snprintf(th.hdr[h]+ofs, width+2, fmt, ""); + snprintf(th.hdr[h]+ofs, width+2, + "%*.*s|", width, width, ""); else { th.num_lines = h+1; - snprintf(th.hdr[h]+ofs, width+2, fmt, cname); + snprintf(th.hdr[h]+ofs, width+2, + "%*.*s|", width, width, cname); } cname += width; } -- 2.47.3