Module Name: src Committed By: christos Date: Mon Feb 10 04:54:01 UTC 2020
Modified Files: src/usr.bin/xlint/common: externs.h mem.c src/usr.bin/xlint/xlint: xlint.c Log Message: use asprintf(). To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/usr.bin/xlint/common/externs.h cvs rdiff -u -r1.7 -r1.8 src/usr.bin/xlint/common/mem.c cvs rdiff -u -r1.48 -r1.49 src/usr.bin/xlint/xlint/xlint.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/xlint/common/externs.h diff -u src/usr.bin/xlint/common/externs.h:1.6 src/usr.bin/xlint/common/externs.h:1.7 --- src/usr.bin/xlint/common/externs.h:1.6 Fri Aug 19 06:18:11 2016 +++ src/usr.bin/xlint/common/externs.h Sun Feb 9 23:54:01 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: externs.h,v 1.6 2016/08/19 10:18:11 christos Exp $ */ +/* $NetBSD: externs.h,v 1.7 2020/02/10 04:54:01 christos Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -57,6 +57,7 @@ extern void *xrealloc(void *, size_t); extern char *xstrdup(const char *); extern void nomem(void); extern void *xmapalloc(size_t); +extern void xasprintf(char **, const char *, ...) __printflike(2, 3); /* * emit.c Index: src/usr.bin/xlint/common/mem.c diff -u src/usr.bin/xlint/common/mem.c:1.7 src/usr.bin/xlint/common/mem.c:1.8 --- src/usr.bin/xlint/common/mem.c:1.7 Sun Jun 20 18:20:16 2004 +++ src/usr.bin/xlint/common/mem.c Sun Feb 9 23:54:01 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: mem.c,v 1.7 2004/06/20 22:20:16 jmc Exp $ */ +/* $NetBSD: mem.c,v 1.8 2020/02/10 04:54:01 christos Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,12 +37,13 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: mem.c,v 1.7 2004/06/20 22:20:16 jmc Exp $"); +__RCSID("$NetBSD: mem.c,v 1.8 2020/02/10 04:54:01 christos Exp $"); #endif #include <sys/param.h> #include <sys/types.h> #include <sys/mman.h> +#include <stdarg.h> #include <stdlib.h> #include <string.h> @@ -98,6 +99,19 @@ nomem(void) errx(1, "virtual memory exhausted"); } +void +xasprintf(char **buf, const char *fmt, ...) +{ + int e; + va_list ap; + + va_start(ap, fmt); + e = vasprintf(buf, fmt, ap); + va_end(ap); + if (e < 0) + nomem(); +} + #if defined(MAP_ANONYMOUS) && !defined(MAP_ANON) #define MAP_ANON MAP_ANONYMOUS #endif Index: src/usr.bin/xlint/xlint/xlint.c diff -u src/usr.bin/xlint/xlint/xlint.c:1.48 src/usr.bin/xlint/xlint/xlint.c:1.49 --- src/usr.bin/xlint/xlint/xlint.c:1.48 Sun Feb 9 03:10:25 2020 +++ src/usr.bin/xlint/xlint/xlint.c Sun Feb 9 23:54:01 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: xlint.c,v 1.48 2020/02/09 08:10:25 fox Exp $ */ +/* $NetBSD: xlint.c,v 1.49 2020/02/10 04:54:01 christos Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: xlint.c,v 1.48 2020/02/09 08:10:25 fox Exp $"); +__RCSID("$NetBSD: xlint.c,v 1.49 2020/02/10 04:54:01 christos Exp $"); #endif #include <sys/param.h> @@ -613,7 +613,7 @@ fname(const char *name) const char *bn, *suff; char **args, *ofn, *pathname; const char *CC; - size_t buff_size, len; + size_t len; int is_stdin; int fd; @@ -648,13 +648,10 @@ fname(const char *name) warnx("-i not supported without -o for standard input"); return; } - buff_size = strlen(bn) + (bn == suff ? 4 : 2); - ofn = xmalloc(buff_size); len = bn == suff ? strlen(bn) : (size_t)((suff - 1) - bn); - (void)snprintf(ofn, buff_size, "%.*s.ln", (int)len, bn); + xasprintf(&ofn, "%.*s.ln", (int)len, bn); } else { - ofn = xmalloc(strlen(tmpdir) + sizeof ("lint1.XXXXXX")); - (void)sprintf(ofn, "%slint1.XXXXXX", tmpdir); + xasprintf(&ofn, "%slint1.XXXXXX", tmpdir); fd = mkstemp(ofn); if (fd == -1) { warn("can't make temp");