On 19:30 Wed 30 Aug , Otto Moerbeek wrote: > On Wed, Aug 30, 2017 at 05:54:16PM +0100, Ricardo Mestre wrote: > > > Hi, > > > > Unbreak DEBUG for nfsd(8), this one was caught with cppcheck. > > > > It has been broken for about 7 years ago when a couple of errx calls, which > > had > > string format arguments, were replaced by syslog calls. > > Can you please formulate this without using a GNU extension, i.e. the > standard knows > > #define X A(a, ...) bla > > but not > > #define X A(a...) bla > > -Otto >
Hi Otto, Something like this then? I also had to convert a few syslog calls since fprintf doesn't know about %m, so in those cases I added strerror to them. Index: nfsd.c =================================================================== RCS file: /cvs/src/sbin/nfsd/nfsd.c,v retrieving revision 1.36 diff -u -p -u -r1.36 nfsd.c --- nfsd.c 7 Jun 2016 01:29:38 -0000 1.36 +++ nfsd.c 30 Aug 2017 18:57:56 -0000 @@ -64,7 +64,11 @@ /* Global defs */ #ifdef DEBUG -#define syslog(e, s) fprintf(stderr,(s)) +#define syslog(e, s, ...) \ +do { \ + fprintf(stderr, (s), ##__VA_ARGS__); \ + fprintf(stderr, "\n"); \ +} while (0) int debug = 1; #else int debug = 0; @@ -163,13 +167,15 @@ main(int argc, char *argv[]) if (udpflag && (!pmap_set(RPCPROG_NFS, 2, IPPROTO_UDP, NFS_PORT) || !pmap_set(RPCPROG_NFS, 3, IPPROTO_UDP, NFS_PORT))) { - syslog(LOG_ERR, "can't register with portmap for UDP (%m)."); + syslog(LOG_ERR, "can't register with portmap for UDP (%s).", + strerror(errno)); return (1); } if (tcpflag && (!pmap_set(RPCPROG_NFS, 2, IPPROTO_TCP, NFS_PORT) || !pmap_set(RPCPROG_NFS, 3, IPPROTO_TCP, NFS_PORT))) { - syslog(LOG_ERR, "can't register with portmap for TCP (%m)."); + syslog(LOG_ERR, "can't register with portmap for TCP (%s).", + strerror(errno)); return (1); } return (0); @@ -182,7 +188,7 @@ main(int argc, char *argv[]) for (i = 0; i < nfsdcnt; i++) { switch (fork()) { case -1: - syslog(LOG_ERR, "fork: %m"); + syslog(LOG_ERR, "fork: %s", strerror(errno)); return (1); case 0: break; @@ -193,7 +199,7 @@ main(int argc, char *argv[]) setproctitle("server"); nsd.nsd_nfsd = NULL; if (nfssvc(NFSSVC_NFSD, &nsd) < 0) { - syslog(LOG_ERR, "nfssvc: %m"); + syslog(LOG_ERR, "nfssvc: %s", strerror(errno)); return (1); } return (0); @@ -240,7 +246,7 @@ main(int argc, char *argv[]) } if (setsockopt(tcpsock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) - syslog(LOG_ERR, "setsockopt SO_REUSEADDR: %m"); + syslog(LOG_ERR, "setsockopt SO_REUSEADDR: %s", strerror(errno)); memset(&inetaddr, 0, sizeof inetaddr); inetaddr.sin_family = AF_INET; inetaddr.sin_addr.s_addr = INADDR_ANY; @@ -284,7 +290,7 @@ main(int argc, char *argv[]) if (connect_type_cnt > 1) { ret = poll(&pfd, 1, INFTIM); if (ret < 1) { - syslog(LOG_ERR, "poll failed: %m"); + syslog(LOG_ERR, "poll failed: %s", strerror(errno)); return (1); } @@ -297,14 +303,14 @@ main(int argc, char *argv[]) if (errno == EWOULDBLOCK || errno == EINTR || errno == ECONNABORTED) continue; - syslog(LOG_ERR, "accept failed: %m"); + syslog(LOG_ERR, "accept failed: %s", strerror(errno)); return (1); } memset(inetpeer.sin_zero, 0, sizeof(inetpeer.sin_zero)); if (setsockopt(msgsock, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)) < 0) syslog(LOG_ERR, - "setsockopt SO_KEEPALIVE: %m"); + "setsockopt SO_KEEPALIVE: %s", strerror(errno)); nfsdargs.sock = msgsock; nfsdargs.name = (caddr_t)&inetpeer; nfsdargs.namelen = sizeof(inetpeer);