]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 1757] oncore snprintf("%m") doesn't expand %m.
authorDave Hart <hart@ntp.org>
Fri, 17 Dec 2010 02:53:54 +0000 (02:53 +0000)
committerDave Hart <hart@ntp.org>
Fri, 17 Dec 2010 02:53:54 +0000 (02:53 +0000)
bk: 4d0ad0c28AXhCwuqMIsNvBD2Hf8X6g

ChangeLog
include/ntp_stdlib.h
libntp/msyslog.c
ntpd/ntp_io.c
ntpd/refclock_oncore.c

index 1efeaae508a2211188f6024523c0ad5d4bb4e444..daf62709ccd1d540bf909a04821f4def7802829a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,7 @@
   local timezone.
 * [Bug 1751] Support for Atari FreeMiNT OS.
 * [Bug 1754] --version output should be more verbose.
+* [Bug 1757] oncore snprintf("%m") doesn't expand %m.
 * Upgrade to libopts 33.5.8 from AutoGen 5.11.6pre3.
 * Suppress ntp-keygen OpenSSL version display for --help, --version,
   display both build and runtime OpenSSL versions when they differ.
index 1f8e404803c699e2a553693a29774dd60311afa7..d1033ffe4f606b72863da0980c43b1355164ab3b 100644 (file)
 # endif
 #endif
 
-extern void    msyslog         (int, const char *, ...)
+extern size_t  mvsnprintf(char *, size_t, const char *, va_list);
+extern size_t  msnprintf(char *, size_t, const char *, ...)
+                               __attribute__((__format__(__printf__, 3, 4)));
+extern void    msyslog(int, const char *, ...)
                                __attribute__((__format__(__printf__, 2, 3)));
 
 /*
index 833a6cc1f037f15eef5e376e22141a5a40399393..b26db77890874cd83a541da5f55f969a2b271d76 100644 (file)
@@ -127,22 +127,17 @@ format_errmsg(char *nfmt, int lennfmt, const char *fmt, int errval)
        *n = '\0';
 }
 
-#if defined(__STDC__) || defined(HAVE_STDARG_H)
-void msyslog(int level, const char *fmt, ...)
-#else /* defined(__STDC__) || defined(HAVE_STDARG_H) */
-     /*VARARGS*/
-     void msyslog(va_alist)
-     va_dcl
-#endif /* defined(__STDC__) || defined(HAVE_STDARG_H) */
+
+size_t
+mvsnprintf(
+       char *          buf,
+       size_t          bufsiz,
+       const char *    fmt,
+       va_list         ap
+       )
 {
-#if defined(__STDC__) || defined(HAVE_STDARG_H)
-#else
-       int level;
-       const char *fmt;
-#endif
-       va_list ap;
-       char buf[1025], nfmt[256];
-       int errval;
+       char    nfmt[256];
+       int     errval;
 
        /*
         * Save the error value as soon as possible
@@ -155,17 +150,42 @@ void msyslog(int level, const char *fmt, ...)
                errval = errno;
 #endif /* SYS_WINNT */
 
-#if defined(__STDC__) || defined(HAVE_STDARG_H)
+       format_errmsg(nfmt, sizeof(nfmt), fmt, errval);
+
+       return vsnprintf(buf, bufsiz, nfmt, ap);
+}
+
+size_t
+msnprintf(
+       char *          buf,
+       size_t          bufsiz,
+       const char *    fmt,
+       ...
+       )
+{
+       va_list ap;
+       size_t  rc;
+
        va_start(ap, fmt);
-#else
-       va_start(ap);
+       rc = mvsnprintf(buf, bufsiz, fmt, ap);
+       va_end(ap);
 
-       level = va_arg(ap, int);
-       fmt = va_arg(ap, char *);
-#endif
-       format_errmsg(nfmt, sizeof(nfmt), fmt, errval);
+       return rc;
+}
+
+
+void
+msyslog(
+       int             level,
+       const char *    fmt,
+       ...
+       )
+{
+       char    buf[1024];
+       va_list ap;
 
-       vsnprintf(buf, sizeof(buf), nfmt, ap);
+       va_start(ap, fmt);
+       mvsnprintf(buf, sizeof(buf), fmt, ap);
        va_end(ap);
        addto_syslog(level, buf);
 }
index cf253ca9572b069ba42abd452f550450fdb65ed9..16794a2651f9798e83770bbb0dd60de044124233 100644 (file)
@@ -2766,7 +2766,7 @@ io_multicast_add(
         */
        if (IS_IPV4(addr))
                one_ep = wildipv4;
-       else if (IS_IPV6(addr))
+       else
                one_ep = wildipv6;
        for (ep = ep_list; ep != NULL; ep = ep->elink) {
                if (ep->ignore_packets || AF(&ep->sin) != AF(addr) ||
index 80ffc2bdd9b6a2cfa91f15579cd55dc0568e7e51..bce8db882bdc160f84840fe6413a725c1a334362 100644 (file)
@@ -846,13 +846,13 @@ oncore_ppsapi(
        char *cp, Msg[160];
 
        if (time_pps_getcap(instance->pps_h, &cap) < 0) {
-               snprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m");
+               msnprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m");
                oncore_log(instance, LOG_ERR, Msg);
                return (0);
        }
 
        if (time_pps_getparams(instance->pps_h, &instance->pps_p) < 0) {
-               snprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m");
+               msnprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m");
                oncore_log(instance, LOG_ERR, Msg);
                return (0);
        }
@@ -912,7 +912,7 @@ oncore_ppsapi(
 
                if (time_pps_kcbind(instance->pps_h, PPS_KC_HARDPPS, i,
                    PPS_TSFMT_TSPEC) < 0) {
-                       snprintf(Msg, sizeof(Msg), "time_pps_kcbind failed: %m");
+                       msnprintf(Msg, sizeof(Msg), "time_pps_kcbind failed: %m");
                        oncore_log(instance, LOG_ERR, Msg);
                        oncore_log(instance, LOG_ERR, "HARDPPS failed, abort...");
                        return (0);
@@ -1745,14 +1745,14 @@ oncore_get_timestamp(
         */
 
        if (time_pps_getcap(instance->pps_h, &current_mode) < 0) {
-               snprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m");
+               msnprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m");
                oncore_log(instance, LOG_ERR, Msg);
                peer->flags &= ~FLAG_PPS;
                return;
        }
 
        if (time_pps_getparams(instance->pps_h, &current_params) < 0) {
-               snprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m");
+               msnprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m");
                oncore_log(instance, LOG_ERR, Msg);
                peer->flags &= ~FLAG_PPS;
                return;