Module Name:    src
Committed By:   christos
Date:           Fri Jan 11 20:41:53 UTC 2019

Modified Files:
        src/usr.sbin/rtadvd: Makefile rtadvd.c

Log Message:
use expandm from libwrap.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/usr.sbin/rtadvd/Makefile
cvs rdiff -u -r1.66 -r1.67 src/usr.sbin/rtadvd/rtadvd.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.sbin/rtadvd/Makefile
diff -u src/usr.sbin/rtadvd/Makefile:1.21 src/usr.sbin/rtadvd/Makefile:1.22
--- src/usr.sbin/rtadvd/Makefile:1.21	Tue Oct 10 15:30:41 2017
+++ src/usr.sbin/rtadvd/Makefile	Fri Jan 11 15:41:53 2019
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.21 2017/10/10 19:30:41 christos Exp $
+# $NetBSD: Makefile,v 1.22 2019/01/11 20:41:53 christos Exp $
 
 WARNS?=	4
 
@@ -14,6 +14,12 @@ CPPFLAGS+=	-DINET6
 LDADD+=		-lutil
 DPADD+=		${LIBUTIL}
 
+LIBWRAP=	${NETBSDSRCDIR}/lib/libwrap
+SRCS+=		expandm.c
+.PATH.c:	${LIBWRAP}
+CPPFLAGS+=	-I${LIBWRAP}
+
+
 .if ${MKSHARE} != "no"
 FILESDIR=	/usr/share/examples/rtadvd
 FILES=	rtadvd.conf

Index: src/usr.sbin/rtadvd/rtadvd.c
diff -u src/usr.sbin/rtadvd/rtadvd.c:1.66 src/usr.sbin/rtadvd/rtadvd.c:1.67
--- src/usr.sbin/rtadvd/rtadvd.c:1.66	Tue Apr 24 14:31:48 2018
+++ src/usr.sbin/rtadvd/rtadvd.c	Fri Jan 11 15:41:53 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtadvd.c,v 1.66 2018/04/24 18:31:48 roy Exp $	*/
+/*	$NetBSD: rtadvd.c,v 1.67 2019/01/11 20:41:53 christos Exp $	*/
 /*	$KAME: rtadvd.c,v 1.92 2005/10/17 14:40:02 suz Exp $	*/
 
 /*
@@ -70,6 +70,7 @@
 #include "dump.h"
 #include "logit.h"
 #include "prog_ops.h"
+#include "expandm.h"
 
 struct msghdr rcvmhdr;
 static unsigned char *rcvcmsgbuf;
@@ -1842,36 +1843,11 @@ ra_timer_update(void *data, struct times
 	       (intmax_t)tm->tv_sec, (intmax_t)tm->tv_nsec);
 }
 
- __format_arg(3)
-static const char *
-expandm(char *buf, size_t len, const char *fmt)
-{
-	char *ptr;
-	const char *e = strerror(errno);
-	size_t cur = 0, elen = strlen(e);
-
-	*buf = '\0';
-	while ((ptr = strstr(fmt, "%m")) != NULL) {
-		size_t l = (size_t)(ptr - fmt);
-		if (cur + elen + l + 1 >= len)
-			return buf;
-		memcpy(buf + cur, fmt, l);
-		cur += l;
-		memcpy(buf + cur, e, elen);
-		cur += elen;
-		fmt += l + 2;
-		buf[cur] = '\0';
-	}
-	strlcat(buf, fmt, len);
-	strlcat(buf, "\n", len); /* syslog does not need \n, printf does */
-	return buf;
-}
-
 void
 logit(int level, const char *fmt, ...)
 {
 	va_list ap;
-	char buf[1024];
+	char *buf;
 
 	va_start(ap, fmt);
 	if (!Dflag) {
@@ -1880,6 +1856,8 @@ logit(int level, const char *fmt, ...)
 		return;
 	}
 
-	vfprintf(stderr, expandm(buf, sizeof(buf), fmt), ap);
+	vfprintf(stderr, buf = expandm(fmt, "\n"), ap);
+	if (buf != fmt)
+		free(buf);
 	va_end(ap);
 }

Reply via email to