use expandm from libwrap.
This commit is contained in:
parent
feb39a8c47
commit
ea179cc7cf
@ -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
|
WARNS?= 4
|
||||||
|
|
||||||
@ -14,6 +14,12 @@ CPPFLAGS+= -DINET6
|
|||||||
LDADD+= -lutil
|
LDADD+= -lutil
|
||||||
DPADD+= ${LIBUTIL}
|
DPADD+= ${LIBUTIL}
|
||||||
|
|
||||||
|
LIBWRAP= ${NETBSDSRCDIR}/lib/libwrap
|
||||||
|
SRCS+= expandm.c
|
||||||
|
.PATH.c: ${LIBWRAP}
|
||||||
|
CPPFLAGS+= -I${LIBWRAP}
|
||||||
|
|
||||||
|
|
||||||
.if ${MKSHARE} != "no"
|
.if ${MKSHARE} != "no"
|
||||||
FILESDIR= /usr/share/examples/rtadvd
|
FILESDIR= /usr/share/examples/rtadvd
|
||||||
FILES= rtadvd.conf
|
FILES= rtadvd.conf
|
||||||
|
@ -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 $ */
|
/* $KAME: rtadvd.c,v 1.92 2005/10/17 14:40:02 suz Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -70,6 +70,7 @@
|
|||||||
#include "dump.h"
|
#include "dump.h"
|
||||||
#include "logit.h"
|
#include "logit.h"
|
||||||
#include "prog_ops.h"
|
#include "prog_ops.h"
|
||||||
|
#include "expandm.h"
|
||||||
|
|
||||||
struct msghdr rcvmhdr;
|
struct msghdr rcvmhdr;
|
||||||
static unsigned char *rcvcmsgbuf;
|
static unsigned char *rcvcmsgbuf;
|
||||||
@ -1842,36 +1843,11 @@ ra_timer_update(void *data, struct timespec *tm)
|
|||||||
(intmax_t)tm->tv_sec, (intmax_t)tm->tv_nsec);
|
(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
|
void
|
||||||
logit(int level, const char *fmt, ...)
|
logit(int level, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char buf[1024];
|
char *buf;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
if (!Dflag) {
|
if (!Dflag) {
|
||||||
@ -1880,6 +1856,8 @@ logit(int level, const char *fmt, ...)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
vfprintf(stderr, expandm(buf, sizeof(buf), fmt), ap);
|
vfprintf(stderr, buf = expandm(fmt, "\n"), ap);
|
||||||
|
if (buf != fmt)
|
||||||
|
free(buf);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user