On Friday, November 20, 2015 05:15:35 AM Craig Rodrigues wrote: > Author: rodrigc > Date: Fri Nov 20 05:15:34 2015 > New Revision: 291090 > URL: https://svnweb.freebsd.org/changeset/base/291090 > > Log: > Convert vmstat to use libxo. > > This patch was based on this patch: > https://github.com/Juniper/libxo/blob/master/patches/vmstat.patch > > by Phil Shafer at Juniper Networks, but updated to the latest > vmstat code. > > Reviewed by: allanjude > Differential Revision: https://reviews.freebsd.org/D3935 > > ... > > Modified: head/usr.bin/vmstat/vmstat.c > ============================================================================== > --- head/usr.bin/vmstat/vmstat.c Fri Nov 20 03:24:04 2015 > (r291089) > +++ head/usr.bin/vmstat/vmstat.c Fri Nov 20 05:15:34 2015 > (r291090) > @@ -277,20 +288,34 @@ retry_nlist: > namelist[X_SUM].n_name = "_cnt"; > goto retry_nlist; > } > - warnx("undefined symbols:"); > for (c = 0; > c < (int)(sizeof(namelist)/sizeof(namelist[0])); > c++) > if (namelist[c].n_type == 0) > - (void)fprintf(stderr, " %s", > + bufsize += strlen(namelist[c].n_name) + > 1; > + bufsize += len + 1; > + buf = bp = alloca(bufsize); > + > + for (c = 0; > + c < (int)(sizeof(namelist)/sizeof(namelist[0])); > + c++) > + if (namelist[c].n_type == 0) { > + xo_error(" %s", > namelist[c].n_name); > - (void)fputc('\n', stderr); > + len = strlen(namelist[c].n_name); > + *bp++ = ' '; > + memcpy(bp, namelist[c].n_name, len); > + bp += len; > + } > + *bp = '\0'; > + xo_error("undefined symbols:\n", buf);
Please use some sort of string builder (sbuf or open_memstream()) instead of manual string assembly. The former is easier to read and the latter is more error-prone. Suggested replacement: FILE *fp; fp = open_memstream(&buf, &bufsize); for (c = 0; c < nitems(namelist); c++) { if (namelist[c].n_type == 0) { xo_error(" %s", namelist[c].n_name); (void)fprintf(fp, " %s", namelist[c].n_name); } } fclose(fp); xo_error("undefined symbols:\n", buf); free(buf); -- John Baldwin _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"