2000-03-16 Harlan Stenn <stenn@whimsy.udel.edu>
+ * libntp/Makefile.am (EXTRA_DIST): Added snprintf.c
+
+ * configure.in: Look for (and provide if it's missing) snprintf()
+
* ntpd/ntp_request.c (dns_a): Call crypto_public with the resolved
name and the peer pointer.
(dns_a): crypto_public() is only available if PUBKEY is #defined.
/* Define if you have the `sigvec' function. */
#undef HAVE_SIGVEC
+/* Define if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
/* Define if you have the `srand48' function. */
#undef HAVE_SRAND48
fi
done
-for ac_func in strerror
+for ac_func in snprintf strerror
do
ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh`
echo $ac_n "checking for $ac_func... $ac_c" 1>&6
AC_CHECK_FUNCS(setlinebuf)
AC_CHECK_FUNCS(setpgid setpriority setsid settimeofday setvbuf sigaction)
AC_CHECK_FUNCS(sigvec sigset sigsuspend stime strchr sysconf sysctl)
-AC_REPLACE_FUNCS(strerror)
+AC_REPLACE_FUNCS(snprintf strerror)
case "$target" in
*-*-aix4*)
# Just stubs. Idiots.
../include/des.h:
touch ../include/des.h
-EXTRA_DIST = README $(HEADERS) adjtimex.c log.c strerror.c mktime.c random.c
+EXTRA_DIST = README $(HEADERS) adjtimex.c log.c mktime.c random.c snprintf.c strerror.c
#mktime_.c: mktime.c $(ANSI2KNR)
# $(ANSI2KNR) $< mktime_.c
noinst_HEADERS = lib_strbuf.h log.h
-EXTRA_DIST = README $(HEADERS) adjtimex.c log.c strerror.c mktime.c random.c
+EXTRA_DIST = README $(HEADERS) adjtimex.c log.c mktime.c random.c snprintf.c strerror.c
subdir = libntp
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
$(DEPDIR)/mstolfp$U.Po $(DEPDIR)/msutotsf$U.Po $(DEPDIR)/msyslog$U.Po \
$(DEPDIR)/netof$U.Po $(DEPDIR)/numtoa$U.Po $(DEPDIR)/numtohost$U.Po \
$(DEPDIR)/octtoint$U.Po $(DEPDIR)/prettydate$U.Po $(DEPDIR)/ranny$U.Po \
-$(DEPDIR)/recvbuff$U.Po $(DEPDIR)/refnumtoa$U.Po \
+$(DEPDIR)/recvbuff$U.Po $(DEPDIR)/refnumtoa$U.Po $(DEPDIR)/snprintf.Po \
$(DEPDIR)/statestr$U.Po $(DEPDIR)/strerror.Po $(DEPDIR)/syssignal$U.Po \
$(DEPDIR)/systime$U.Po $(DEPDIR)/tsftomsu$U.Po $(DEPDIR)/tstotv$U.Po \
$(DEPDIR)/tvtoa$U.Po $(DEPDIR)/tvtots$U.Po $(DEPDIR)/uglydate$U.Po \
@AMDEP@include $(DEPDIR)/ranny$U.Po
@AMDEP@include $(DEPDIR)/recvbuff$U.Po
@AMDEP@include $(DEPDIR)/refnumtoa$U.Po
+@AMDEP@include $(DEPDIR)/snprintf.Po
@AMDEP@include $(DEPDIR)/statestr$U.Po
@AMDEP@include $(DEPDIR)/strerror.Po
@AMDEP@include $(DEPDIR)/syssignal$U.Po
--- /dev/null
+#include <sys/types.h>
+
+#ifdef __STDC__
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
+#ifdef __STDC__
+int snprintf(char *str, size_t n, const char *fmt, ...)
+#else
+int snprintf(str, n, fmt, va_alist)
+ char *str;
+ size_t n;
+ const char *fmt;
+ va_dcl
+#endif
+{
+ va_list ap;
+ char *rp;
+ int rval;
+#ifdef __STDC__
+ va_start(ap, fmt);
+#else
+ va_start(ap);
+#endif
+#ifdef VSPRINTF_CHARSTAR
+ rp = vsprintf(str, fmt, ap);
+ va_end(ap);
+ return (strlen(rp));
+#else
+ rval = vsprintf(str, fmt, ap);
+ va_end(ap);
+ return (rval);
+#endif
+}
+
+int
+vsnprintf(str, n, fmt, ap)
+ char *str;
+ size_t n;
+ const char *fmt;
+ va_list ap;
+{
+#ifdef VSPRINTF_CHARSTAR
+ return (strlen(vsprintf(str, fmt, ap)));
+#else
+ return (vsprintf(str, fmt, ap));
+#endif
+}