From: Mark Andrews Date: Fri, 18 May 2018 04:00:08 +0000 (+1000) Subject: remove lib/isc/print.c and lib/isc/tests/print_test.c X-Git-Tag: v9.13.3~97^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4c3386ad959ad89a7bdc623268edd4d6a5dbe9a2;p=thirdparty%2Fbind9.git remove lib/isc/print.c and lib/isc/tests/print_test.c --- diff --git a/config.h.win32 b/config.h.win32 index 09348685d2b..a907da5a0c9 100644 --- a/config.h.win32 +++ b/config.h.win32 @@ -180,6 +180,9 @@ char *getpassphrase(const char *); #if _MSC_VER < 1900 #define snprintf _snprintf #endif +#if _MSC_VER < 1800 +#error Use Visual Studio 2013 or later for %zu support. +#endif #if _MSC_VER <= 1400 #define vsnprintf _vsnprintf #endif diff --git a/configure b/configure index 14e795daee4..955095a42de 100755 --- a/configure +++ b/configure @@ -731,12 +731,6 @@ ISC_PLATFORM_QUADFORMAT DST_EXTRA_SRCS DST_EXTRA_OBJS USE_ISC_SPNEGO -ISC_EXTRA_SRCS -ISC_EXTRA_OBJS -ISC_PLATFORM_NEEDVSNPRINTF -ISC_PLATFORM_NEEDSPRINTF -ISC_PLATFORM_NEEDFPRINTF -ISC_PLATFORM_NEEDPRINTF READLINE_LIB ISC_PLATFORM_NEEDSTRCASESTR ISC_PLATFORM_NEEDSTRLCAT @@ -750,6 +744,8 @@ ISC_PLATFORM_HAVETFO ISC_PLATFORM_NEEDPORTT ISC_PLATFORM_MSGHDRFLAVOR ISC_PLATFORM_HAVESALEN +ISC_EXTRA_SRCS +ISC_EXTRA_OBJS ISC_PLATFORM_NEEDPTON ISC_PLATFORM_NEEDNTOP ISC_PLATFORM_HAVEIF_LADDRCONF @@ -18431,6 +18427,8 @@ fi + + # # Look for a 4.4BSD-style sa_len member in struct sockaddr. # @@ -19022,97 +19020,6 @@ done fi -ISC_PRINT_OBJS= -ISC_PRINT_SRCS= -ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF' -ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF' -ISC_PLATFORM_NEEDSPRINTF='#undef ISC_PLATFORM_NEEDSPRINTF' -ISC_PLATFORM_NEEDVSNPRINTF='#undef ISC_PLATFORM_NEEDVSNPRINTF' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sprintf return type" >&5 -$as_echo_n "checking sprintf return type... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ - char buf[2]; return(*sprintf(buf,"x")); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: char *" >&5 -$as_echo "char *" >&6; } -ISC_PRINT_OBJS="print.$O" -ISC_PRINT_SRCS="print.c" -ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF" - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5 -$as_echo "int" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf" -if test "x$ac_cv_func_vsnprintf" = xyes; then : - -else - ISC_PRINT_OBJS="print.$O" - ISC_PRINT_SRCS="print.c" - ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1" -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking printf for %z support" >&5 -$as_echo_n "checking printf for %z support... " >&6; } -if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: assuming target platform supports %z" >&5 -$as_echo "assuming target platform supports %z" >&6; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -main() { - size_t j = 0; - char buf[100]; - buf[0] = 0; - sprintf(buf, "%zu", j); - exit(strcmp(buf, "0") != 0); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ISC_PRINT_OBJS="print.$O" - ISC_PRINT_SRCS="print.c" - ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1' - ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1' - ISC_PLATFORM_NEEDFSRINTF='#define ISC_PLATFORM_NEEDSPRINTF 1' - ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1" -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - - - - - - -ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS" -ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS" - - ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" if test "x$ac_cv_func_strerror" = xyes; then : diff --git a/configure.in b/configure.in index 06529609632..c58bc8f3727 100644 --- a/configure.in +++ b/configure.in @@ -2478,6 +2478,8 @@ main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 : AC_SUBST(ISC_PLATFORM_NEEDNTOP) AC_SUBST(ISC_PLATFORM_NEEDPTON) +AC_SUBST(ISC_EXTRA_OBJS) +AC_SUBST(ISC_EXTRA_SRCS) # # Look for a 4.4BSD-style sa_len member in struct sockaddr. @@ -2777,59 +2779,6 @@ then AC_CHECK_HEADERS(readline/history.h) fi -ISC_PRINT_OBJS= -ISC_PRINT_SRCS= -ISC_PLATFORM_NEEDPRINTF='#undef ISC_PLATFORM_NEEDPRINTF' -ISC_PLATFORM_NEEDFPRINTF='#undef ISC_PLATFORM_NEEDFPRINTF' -ISC_PLATFORM_NEEDSPRINTF='#undef ISC_PLATFORM_NEEDSPRINTF' -ISC_PLATFORM_NEEDVSNPRINTF='#undef ISC_PLATFORM_NEEDVSNPRINTF' - -AC_MSG_CHECKING(sprintf return type) -AC_TRY_COMPILE([ -#include -], -[ char buf[2]; return(*sprintf(buf,"x"));], -[AC_MSG_RESULT(char *) -ISC_PRINT_OBJS="print.$O" -ISC_PRINT_SRCS="print.c" -ISC_PLATFORM_NEEDSPRINTF="#define ISC_PLATFORM_NEEDSPRINTF" -],[AC_MSG_RESULT(int)]) - -AC_CHECK_FUNC(vsnprintf, [], - [ISC_PRINT_OBJS="print.$O" - ISC_PRINT_SRCS="print.c" - ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"]) - -AC_MSG_CHECKING(printf for %z support) -AC_TRY_RUN([ -#include -main() { - size_t j = 0; - char buf[100]; - buf[0] = 0; - sprintf(buf, "%zu", j); - exit(strcmp(buf, "0") != 0); -} -], - [AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no) - ISC_PRINT_OBJS="print.$O" - ISC_PRINT_SRCS="print.c" - ISC_PLATFORM_NEEDPRINTF='#define ISC_PLATFORM_NEEDPRINTF 1' - ISC_PLATFORM_NEEDFPRINTF='#define ISC_PLATFORM_NEEDFPRINTF 1' - ISC_PLATFORM_NEEDFSRINTF='#define ISC_PLATFORM_NEEDSPRINTF 1' - ISC_PLATFORM_NEEDVSNPRINTF="#define ISC_PLATFORM_NEEDVSNPRINTF 1"], - [AC_MSG_RESULT(assuming target platform supports %z)]) - -AC_SUBST(ISC_PLATFORM_NEEDPRINTF) -AC_SUBST(ISC_PLATFORM_NEEDFPRINTF) -AC_SUBST(ISC_PLATFORM_NEEDSPRINTF) -AC_SUBST(ISC_PLATFORM_NEEDVSNPRINTF) - -ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS $ISC_PRINT_OBJS" -ISC_EXTRA_SRCS="$ISC_EXTRA_SRCS $ISC_PRINT_SRCS" -AC_SUBST(ISC_EXTRA_OBJS) -AC_SUBST(ISC_EXTRA_SRCS) AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR)) # diff --git a/lib/isc/include/isc/platform.h.in b/lib/isc/include/isc/platform.h.in index 540964613ab..f542bd0115f 100644 --- a/lib/isc/include/isc/platform.h.in +++ b/lib/isc/include/isc/platform.h.in @@ -165,27 +165,6 @@ *** Printing. ***/ -/*! \brief - * If this system needs vsnprintf() and snprintf(), ISC_PLATFORM_NEEDVSNPRINTF - * will be defined. - */ -@ISC_PLATFORM_NEEDVSNPRINTF@ - -/*! \brief - * If this system need a modern sprintf() that returns (int) not (char*). - */ -@ISC_PLATFORM_NEEDSPRINTF@ - -/*! \brief - * If this system need a modern printf() that format size %z (size_t). - */ -@ISC_PLATFORM_NEEDPRINTF@ - -/*! \brief - * If this system need a modern fprintf() that format size %z (size_t). - */ -@ISC_PLATFORM_NEEDFPRINTF@ - /*! \brief * The printf format string modifier to use with isc_uint64_t values. */ diff --git a/lib/isc/include/isc/print.h b/lib/isc/include/isc/print.h index 303bd445b72..d38505f1fc9 100644 --- a/lib/isc/include/isc/print.h +++ b/lib/isc/include/isc/print.h @@ -22,33 +22,6 @@ #include #include -/*! - * This block allows lib/isc/print.c to be cleanly compiled even if - * the platform does not need it. The standard Makefile will still - * not compile print.c or archive print.o, so this is just to make test - * compilation ("make print.o") easier. - */ -#if !defined(ISC_PLATFORM_NEEDVSNPRINTF) && defined(ISC__PRINT_SOURCE) -#define ISC_PLATFORM_NEEDVSNPRINTF -#undef snprintf -#undef vsnprintf -#endif - -#if !defined(ISC_PLATFORM_NEEDSPRINTF) && defined(ISC__PRINT_SOURCE) -#define ISC_PLATFORM_NEEDSPRINTF -#undef sprintf -#endif - -#if !defined(ISC_PLATFORM_NEEDFPRINTF) && defined(ISC__PRINT_SOURCE) -#define ISC_PLATFORM_NEEDFPRINTF -#undef fprintf -#endif - -#if !defined(ISC_PLATFORM_NEEDPRINTF) && defined(ISC__PRINT_SOURCE) -#define ISC_PLATFORM_NEEDPRINTF -#undef printf -#endif - /*** *** Macros ***/ @@ -58,50 +31,6 @@ *** Functions ***/ -#ifdef ISC_PLATFORM_NEEDVSNPRINTF -#include -#include -#endif - #include -ISC_LANG_BEGINDECLS - -#ifdef ISC_PLATFORM_NEEDVSNPRINTF -int -isc_print_vsnprintf(char *str, size_t size, const char *format, va_list ap) - ISC_FORMAT_PRINTF(3, 0); -#undef vsnprintf -#define vsnprintf isc_print_vsnprintf - -int -isc_print_snprintf(char *str, size_t size, const char *format, ...) - ISC_FORMAT_PRINTF(3, 4); -#undef snprintf -#define snprintf isc_print_snprintf -#endif /* ISC_PLATFORM_NEEDVSNPRINTF */ - -#ifdef ISC_PLATFORM_NEEDSPRINTF -int -isc_print_sprintf(char *str, const char *format, ...) ISC_FORMAT_PRINTF(2, 3); -#undef sprintf -#define sprintf isc_print_sprintf -#endif - -#ifdef ISC_PLATFORM_NEEDPRINTF -int -isc_print_printf(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); -#undef printf -#define printf isc_print_printf -#endif - -#ifdef ISC_PLATFORM_NEEDFPRINTF -int -isc_print_fprintf(FILE * fp, const char *format, ...) ISC_FORMAT_PRINTF(2, 3); -#undef fprintf -#define fprintf isc_print_fprintf -#endif - -ISC_LANG_ENDDECLS - #endif /* ISC_PRINT_H */ diff --git a/lib/isc/print.c b/lib/isc/print.c deleted file mode 100644 index 55843c4d9dd..00000000000 --- a/lib/isc/print.c +++ /dev/null @@ -1,705 +0,0 @@ -/* - * Copyright (C) Internet Systems Consortium, Inc. ("ISC") - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * See the COPYRIGHT file distributed with this work for additional - * information regarding copyright ownership. - */ - -/*! \file */ - -#include - -#include -#include /* for sprintf() */ -#include /* for strlen() */ -#include /* for assert() */ - -#define ISC__PRINT_SOURCE /* Used to get the isc_print_* prototypes. */ - -#include -#include -#include -#include -#include -#include - -/* - * We use the system's sprintf so we undef it here. - */ -#undef sprintf - -static int -isc__print_printf(void (*emit)(char, void *), void *arg, - const char *format, va_list ap); - -static void -file_emit(char c, void *arg) { - FILE *fp = arg; - int i = c & 0xff; - - putc(i, fp); -} - -#if 0 -static int -isc_print_vfprintf(FILE *fp, const char *format, va_list ap) { - assert(fp != NULL); - assert(format != NULL); - - return (isc__print_printf(file_emit, fp, format, ap)); -} -#endif - -int -isc_print_printf(const char *format, ...) { - va_list ap; - int n; - - assert(format != NULL); - - va_start(ap, format); - n = isc__print_printf(file_emit, stdout, format, ap); - va_end(ap); - return (n); -} - -int -isc_print_fprintf(FILE *fp, const char *format, ...) { - va_list ap; - int n; - - assert(fp != NULL); - assert(format != NULL); - - va_start(ap, format); - n = isc__print_printf(file_emit, fp, format, ap); - va_end(ap); - return (n); -} - -static void -nocheck_emit(char c, void *arg) { - struct { char *str; } *a = arg; - - *(a->str)++ = c; -} - -int -isc_print_sprintf(char *str, const char *format, ...) { - struct { char *str; } arg; - int n; - va_list ap; - - arg.str = str; - - va_start(ap, format); - n = isc__print_printf(nocheck_emit, &arg, format, ap); - va_end(ap); - return (n); -} - -/*! - * Return length of string that would have been written if not truncated. - */ - -int -isc_print_snprintf(char *str, size_t size, const char *format, ...) { - va_list ap; - int ret; - - va_start(ap, format); - ret = isc_print_vsnprintf(str, size, format, ap); - va_end(ap); - return (ret); - -} - -/*! - * Return length of string that would have been written if not truncated. - */ - -static void -string_emit(char c, void *arg) { - struct { char *str; size_t size; } *p = arg; - - if (p->size > 0U) { - *(p->str)++ = c; - p->size--; - } -} - -int -isc_print_vsnprintf(char *str, size_t size, const char *format, va_list ap) { - struct { char *str; size_t size; } arg; - int n; - - assert(str != NULL); - assert(format != NULL); - - arg.str = str; - arg.size = size; - - n = isc__print_printf(string_emit, &arg, format, ap); - if (arg.size > 0U) - *arg.str = '\0'; - return (n); -} - -static int -isc__print_printf(void (*emit)(char, void *), void *arg, - const char *format, va_list ap) -{ - int h; - int l; - int z; - int q; - int alt; - int zero; - int left; - int plus; - int space; - int neg; - isc_int64_t tmpi; - isc_uint64_t tmpui; - unsigned long width; - unsigned long precision; - unsigned int length; - char buf[1024]; - char c; - void *v; - const char *cp; - const char *head; - int count = 0; - int pad; - int zeropad; - int dot; - double dbl; - isc_boolean_t precision_set; -#ifdef HAVE_LONG_DOUBLE - long double ldbl; -#endif - char fmt[32]; - - assert(emit != NULL); - assert(arg != NULL); - assert(format != NULL); - - while (*format != '\0') { - if (*format != '%') { - emit(*format++, arg); - count++; - continue; - } - format++; - - /* - * Reset flags. - */ - dot = neg = space = plus = left = zero = alt = h = l = q = z = 0; - width = precision = 0; - head = ""; - pad = zeropad = 0; - precision_set = ISC_FALSE; - - do { - if (*format == '#') { - alt = 1; - format++; - } else if (*format == '-') { - left = 1; - zero = 0; - format++; - } else if (*format == ' ') { - if (!plus) - space = 1; - format++; - } else if (*format == '+') { - plus = 1; - space = 0; - format++; - } else if (*format == '0') { - if (!left) - zero = 1; - format++; - } else - break; - } while (1); - - /* - * Width. - */ - if (*format == '*') { - width = va_arg(ap, int); - format++; - } else if (isdigit((unsigned char)*format)) { - char *e; - width = strtoul(format, &e, 10); - format = e; - } - - /* - * Precision. - */ - if (*format == '.') { - format++; - dot = 1; - if (*format == '*') { - precision = va_arg(ap, int); - precision_set = ISC_TRUE; - format++; - } else if (isdigit((unsigned char)*format)) { - char *e; - precision = strtoul(format, &e, 10); - precision_set = ISC_TRUE; - format = e; - } - } - - switch (*format) { - case '\0': - continue; - case '%': - emit(*format, arg); - count++; - break; - case 'q': - q = 1; - format++; - goto doint; - case 'h': - h = 1; - format++; - goto doint; - case 'l': - l = 1; - format++; - if (*format == 'l') { - q = 1; - format++; - } - goto doint; - case 'z': - z = 1; - format++; - goto doint; -#ifdef WIN32 - case 'I': - /* Windows has I64 as a modifier for a quad. */ - if (format[1] == '6' && format[2] == '4') { - q = 1; - format += 3; - goto doint; - } - continue; -#endif - case 'n': - case 'i': - case 'd': - case 'o': - case 'u': - case 'x': - case 'X': - doint: - if (precision != 0U) - zero = 0; - switch (*format) { - case 'n': - if (h) { - short int *p; - p = va_arg(ap, short *); - assert(p != NULL); - *p = count; - } else if (l) { - long int *p; - p = va_arg(ap, long *); - assert(p != NULL); - *p = count; - } else if (z) { - size_t *p; - p = va_arg(ap, size_t *); - assert(p != NULL); - *p = count; - } else { - int *p; - p = va_arg(ap, int *); - assert(p != NULL); - *p = count; - } - break; - case 'i': - case 'd': - if (q) - tmpi = va_arg(ap, isc_int64_t); - else if (l) - tmpi = va_arg(ap, long int); - else if (z) - tmpi = va_arg(ap, ssize_t); - else - tmpi = va_arg(ap, int); - if (tmpi < 0) { - head = "-"; - tmpui = -tmpi; - } else { - if (plus) - head = "+"; - else if (space) - head = " "; - else - head = ""; - tmpui = tmpi; - } - if (tmpui <= 0xffffffffU) - sprintf(buf, "%lu", - (unsigned long)tmpui); - else { - unsigned long mid; - unsigned long lo; - unsigned long hi; - lo = tmpui % 1000000000; - tmpui /= 1000000000; - mid = tmpui % 1000000000; - hi = tmpui / 1000000000; - if (hi != 0U) { - sprintf(buf, "%lu", hi); - sprintf(buf + strlen(buf), - "%09lu", mid); - } else - sprintf(buf, "%lu", mid); - sprintf(buf + strlen(buf), "%09lu", - lo); - } - goto printint; - case 'o': - if (q) - tmpui = va_arg(ap, isc_uint64_t); - else if (l) - tmpui = va_arg(ap, long int); - else if (z) - tmpui = va_arg(ap, size_t); - else - tmpui = va_arg(ap, int); - if (tmpui <= 0xffffffffU) - sprintf(buf, alt ? "%#lo" : "%lo", - (unsigned long)tmpui); - else { - unsigned long mid; - unsigned long lo; - unsigned long hi; - lo = tmpui % 010000000000; - tmpui /= 010000000000; - mid = tmpui % 010000000000; - hi = tmpui / 010000000000; - if (hi != 0U) { - sprintf(buf, - alt ? "%#lo" : "%lo", - hi); - sprintf(buf + strlen(buf), - "%09lo", mid); - } else - sprintf(buf, - alt ? "%#lo" : "%lo", - mid); - sprintf(buf + strlen(buf), "%09lo", lo); - } - goto printint; - case 'u': - if (q) - tmpui = va_arg(ap, isc_uint64_t); - else if (l) - tmpui = va_arg(ap, unsigned long int); - else if (z) - tmpui = va_arg(ap, size_t); - else - tmpui = va_arg(ap, unsigned int); - if (tmpui <= 0xffffffffU) - sprintf(buf, "%lu", - (unsigned long)tmpui); - else { - unsigned long mid; - unsigned long lo; - unsigned long hi; - lo = tmpui % 1000000000; - tmpui /= 1000000000; - mid = tmpui % 1000000000; - hi = tmpui / 1000000000; - if (hi != 0U) { - sprintf(buf, "%lu", hi); - sprintf(buf + strlen(buf), - "%09lu", mid); - } else - sprintf(buf, "%lu", mid); - sprintf(buf + strlen(buf), "%09lu", - lo); - } - goto printint; - case 'x': - if (q) - tmpui = va_arg(ap, isc_uint64_t); - else if (l) - tmpui = va_arg(ap, unsigned long int); - else if (z) - tmpui = va_arg(ap, size_t); - else - tmpui = va_arg(ap, unsigned int); - if (alt) { - head = "0x"; - if (precision > 2U) - precision -= 2; - } - if (tmpui <= 0xffffffffU) - sprintf(buf, "%lx", - (unsigned long)tmpui); - else { - unsigned long hi = tmpui>>32; - unsigned long lo = tmpui & 0xffffffff; - sprintf(buf, "%lx", hi); - sprintf(buf + strlen(buf), "%08lx", lo); - } - goto printint; - case 'X': - if (q) - tmpui = va_arg(ap, isc_uint64_t); - else if (l) - tmpui = va_arg(ap, unsigned long int); - else if (z) - tmpui = va_arg(ap, size_t); - else - tmpui = va_arg(ap, unsigned int); - if (alt) { - head = "0X"; - if (precision > 2U) - precision -= 2; - } - if (tmpui <= 0xffffffffU) - sprintf(buf, "%lX", - (unsigned long)tmpui); - else { - unsigned long hi = tmpui>>32; - unsigned long lo = tmpui & 0xffffffff; - sprintf(buf, "%lX", hi); - sprintf(buf + strlen(buf), "%08lX", lo); - } - goto printint; - printint: - if (precision_set || width != 0U) { - length = strlen(buf); - if (length < precision) - zeropad = precision - length; - else if (length < width && zero) - zeropad = width - length; - if (width != 0U) { - pad = width - length - - zeropad - strlen(head); - if (pad < 0) - pad = 0; - } - } - count += strlen(head) + strlen(buf) + pad + - zeropad; - if (!left) { - while (pad > 0) { - emit(' ', arg); - pad--; - } - } - cp = head; - while (*cp != '\0') - emit(*cp++, arg); - while (zeropad > 0) { - emit('0', arg); - zeropad--; - } - cp = buf; - while (*cp != '\0') - emit(*cp++, arg); - while (pad > 0) { - emit(' ', arg); - pad--; - } - break; - default: - break; - } - break; - case 's': - cp = va_arg(ap, char *); - - if (precision_set) { - /* - * cp need not be NULL terminated. - */ - const char *tp; - unsigned long n; - - if (precision != 0U) - assert(cp != NULL); - n = precision; - tp = cp; - while (n != 0U && *tp != '\0') - n--, tp++; - length = precision - n; - } else { - assert(cp != NULL); - length = strlen(cp); - } - if (width != 0U) { - pad = width - length; - if (pad < 0) - pad = 0; - } - count += pad + length; - if (!left) - while (pad > 0) { - emit(' ', arg); - pad--; - } - if (precision_set) - while (precision > 0U && *cp != '\0') { - emit(*cp++, arg); - precision--; - } - else - while (*cp != '\0') - emit(*cp++, arg); - while (pad > 0) { - emit(' ', arg); - pad--; - } - break; - case 'c': - c = va_arg(ap, int); - if (width > 0U) { - count += width; - width--; - if (left) - emit(c, arg); - while (width-- > 0U) - emit(' ', arg); - if (!left) - emit(c, arg); - } else { - count++; - emit(c, arg); - } - break; - case 'p': - v = va_arg(ap, void *); - sprintf(buf, "%p", v); - length = strlen(buf); - if (precision > length) - zeropad = precision - length; - if (width > 0U) { - pad = width - length - zeropad; - if (pad < 0) - pad = 0; - } - count += length + pad + zeropad; - if (!left) - while (pad > 0) { - emit(' ', arg); - pad--; - } - cp = buf; - if (zeropad > 0 && buf[0] == '0' && - (buf[1] == 'x' || buf[1] == 'X')) { - emit(*cp++, arg); - emit(*cp++, arg); - while (zeropad > 0) { - emit('0', arg); - zeropad--; - } - } - while (*cp != '\0') - emit(*cp++, arg); - while (pad > 0) { - emit(' ', arg); - pad--; - } - break; - case 'D': /*deprecated*/ - assert("use %ld instead of %D" == NULL); - case 'O': /*deprecated*/ - assert("use %lo instead of %O" == NULL); - case 'U': /*deprecated*/ - assert("use %lu instead of %U" == NULL); - - case 'L': -#ifdef HAVE_LONG_DOUBLE - l = 1; -#else - assert("long doubles are not supported" == NULL); -#endif - /* FALLTHROUGH */ - case 'e': - case 'E': - case 'f': - case 'g': - case 'G': - if (!dot) - precision = 6; - /* - * IEEE floating point. - * MIN 2.2250738585072014E-308 - * MAX 1.7976931348623157E+308 - * VAX floating point has a smaller range than IEEE. - * - * precisions > 324 don't make much sense. - * if we cap the precision at 512 we will not - * overflow buf. - */ - if (precision > 512U) - precision = 512; - sprintf(fmt, "%%%s%s.%lu%s%c", alt ? "#" : "", - plus ? "+" : space ? " " : "", - precision, l ? "L" : "", *format); - switch (*format) { - case 'e': - case 'E': - case 'f': - case 'g': - case 'G': -#ifdef HAVE_LONG_DOUBLE - if (l) { - ldbl = va_arg(ap, long double); - sprintf(buf, fmt, ldbl); - } else -#endif - { - dbl = va_arg(ap, double); - sprintf(buf, fmt, dbl); - } - length = strlen(buf); - if (width > 0U) { - pad = width - length; - if (pad < 0) - pad = 0; - } - count += length + pad; - if (!left) - while (pad > 0) { - emit(' ', arg); - pad--; - } - cp = buf; - while (*cp != ' ') - emit(*cp++, arg); - while (pad > 0) { - emit(' ', arg); - pad--; - } - break; - default: - continue; - } - break; - default: - continue; - } - format++; - } - return (count); -} diff --git a/lib/isc/tests/Atffile b/lib/isc/tests/Atffile index 359b30604ed..a8e7e0fc1f8 100644 --- a/lib/isc/tests/Atffile +++ b/lib/isc/tests/Atffile @@ -17,7 +17,6 @@ tp: mem_test tp: netaddr_test tp: parse_test tp: pool_test -tp: print_test tp: queue_test tp: radix_test tp: regex_test diff --git a/lib/isc/tests/Kyuafile b/lib/isc/tests/Kyuafile index e0d5355e365..ab40a71d8c9 100644 --- a/lib/isc/tests/Kyuafile +++ b/lib/isc/tests/Kyuafile @@ -16,7 +16,6 @@ atf_test_program{name='mem_test'} atf_test_program{name='netaddr_test'} atf_test_program{name='parse_test'} atf_test_program{name='pool_test'} -atf_test_program{name='print_test'} atf_test_program{name='queue_test'} atf_test_program{name='radix_test'} atf_test_program{name='regex_test'} diff --git a/lib/isc/tests/Makefile.in b/lib/isc/tests/Makefile.in index 7d72a9ae890..cac434ee82c 100644 --- a/lib/isc/tests/Makefile.in +++ b/lib/isc/tests/Makefile.in @@ -35,7 +35,7 @@ SRCS = isctest.c aes_test.c atomic_test.c buffer_test.c \ counter_test.c errno_test.c file_test.c hash_test.c \ heap_test.c ht_test.c inet_ntop_test.c lex_test.c \ mem_test.c netaddr_test.c parse_test.c pool_test.c \ - print_test.c queue_test.c radix_test.c random_test.c \ + queue_test.c radix_test.c random_test.c \ regex_test.c result_test.c safe_test.c sockaddr_test.c \ socket_test.c socket_test.c symtab_test.c task_test.c \ taskpool_test.c time_test.c timer_test.c @@ -46,7 +46,7 @@ TARGETS = aes_test@EXEEXT@ atomic_test@EXEEXT@ buffer_test@EXEEXT@ \ hash_test@EXEEXT@ heap_test@EXEEXT@ ht_test@EXEEXT@ \ inet_ntop_test@EXEEXT@ lex_test@EXEEXT@ mem_test@EXEEXT@ \ netaddr_test@EXEEXT@ parse_test@EXEEXT@ pool_test@EXEEXT@ \ - print_test@EXEEXT@ queue_test@EXEEXT@ radix_test@EXEEXT@ \ + queue_test@EXEEXT@ radix_test@EXEEXT@ \ random_test@EXEEXT@ regex_test@EXEEXT@ result_test@EXEEXT@ \ safe_test@EXEEXT@ sockaddr_test@EXEEXT@ socket_test@EXEEXT@ \ socket_test@EXEEXT@ symtab_test@EXEEXT@ task_test@EXEEXT@ \ @@ -115,11 +115,6 @@ pool_test@EXEEXT@: pool_test.@O@ isctest.@O@ ${ISCDEPLIBS} ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \ pool_test.@O@ isctest.@O@ ${ISCLIBS} ${LIBS} -print_test.@O@: ${top_srcdir}/lib/isc/print.c -print_test@EXEEXT@: print_test.@O@ ${ISCDEPLIBS} - ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \ - print_test.@O@ ${ISCLIBS} ${LIBS} - queue_test@EXEEXT@: queue_test.@O@ isctest.@O@ ${ISCDEPLIBS} ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \ queue_test.@O@ isctest.@O@ ${ISCLIBS} ${LIBS} diff --git a/lib/isc/tests/print_test.c b/lib/isc/tests/print_test.c deleted file mode 100644 index dbbeb0f6199..00000000000 --- a/lib/isc/tests/print_test.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) Internet Systems Consortium, Inc. ("ISC") - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * See the COPYRIGHT file distributed with this work for additional - * information regarding copyright ownership. - */ - -#include - -#include - -#include -#include -#include -#include - -/* - * Workout if we need to force the inclusion of print.c so we can test - * it on all platforms even if we don't include it in libisc. - */ -#include -#if !defined(ISC_PLATFORM_NEEDPRINTF) && \ - !defined(ISC_PLATFORM_NEEDFPRINTF) && \ - !defined(ISC_PLATFORM_NEEDSPRINTF) && \ - !defined(ISC_PLATFORM_NEEDVSNPRINTF) -#define ISC__PRINT_SOURCE -#include "../print.c" -#else -#if !defined(ISC_PLATFORM_NEEDPRINTF) || \ - !defined(ISC_PLATFORM_NEEDFPRINTF) || \ - !defined(ISC_PLATFORM_NEEDSPRINTF) || \ - !defined(ISC_PLATFORM_NEEDVSNPRINTF) -#define ISC__PRINT_SOURCE -#endif -#include -#include -#include -#endif - -ATF_TC(snprintf); -ATF_TC_HEAD(snprintf, tc) { - atf_tc_set_md_var(tc, "descr", "snprintf implementation"); -} -ATF_TC_BODY(snprintf, tc) { - char buf[10000]; - isc_uint64_t ll = 8589934592ULL; - isc_uint64_t nn = 20000000000000ULL; - isc_uint64_t zz = 10000000000000000000ULL; - int n; - size_t size; - - UNUSED(tc); - - /* - * 4294967296 <= 8589934592 < 1000000000^2 to verify fix for - * RT#36505. - */ - - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%qu", ll); - ATF_CHECK_EQ(n, 10); - ATF_CHECK_STREQ(buf, "8589934592"); - - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%llu", ll); - ATF_CHECK_EQ(n, 10); - ATF_CHECK_STREQ(buf, "8589934592"); - - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%qu", nn); - ATF_CHECK_EQ(n, 14); - ATF_CHECK_STREQ(buf, "20000000000000"); - - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%llu", nn); - ATF_CHECK_EQ(n, 14); - ATF_CHECK_STREQ(buf, "20000000000000"); - - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%qu", zz); - ATF_CHECK_EQ(n, 20); - ATF_CHECK_STREQ(buf, "10000000000000000000"); - - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%llu", zz); - ATF_CHECK_EQ(n, 20); - ATF_CHECK_STREQ(buf, "10000000000000000000"); - - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%lld", nn); - ATF_CHECK_EQ(n, 14); - ATF_CHECK_STREQ(buf, "20000000000000"); - - size = 1000; - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%zu", size); - ATF_CHECK_EQ(n, 4); - ATF_CHECK_STREQ(buf, "1000"); - - size = 1000; - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%zx", size); - ATF_CHECK_EQ(n, 3); - ATF_CHECK_STREQ(buf, "3e8"); - - size = 1000; - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "%zo", size); - ATF_CHECK_EQ(n, 4); - ATF_CHECK_STREQ(buf, "1750"); - - zz = 0xf5f5f5f5f5f5f5f5ULL; - memset(buf, 0xff, sizeof(buf)); - n = isc_print_snprintf(buf, sizeof(buf), "0x%"ISC_PRINT_QUADFORMAT"x", zz); - ATF_CHECK_EQ(n, 18); - ATF_CHECK_STREQ(buf, "0xf5f5f5f5f5f5f5f5"); -} - -ATF_TC(fprintf); -ATF_TC_HEAD(fprintf, tc) { - atf_tc_set_md_var(tc, "descr", "fprintf implementation"); -} -ATF_TC_BODY(fprintf, tc) { - FILE *f; - int n; - size_t size; - char buf[10000]; - - UNUSED(tc); - - f = fopen("fprintf.test", "w+"); - ATF_REQUIRE(f != NULL); - - size = 1000; - n = isc_print_fprintf(f, "%zu", size); - ATF_CHECK_EQ(n, 4); - - rewind(f); - - memset(buf, 0, sizeof(buf)); - n = fread(buf, 1, sizeof(buf), f); - ATF_CHECK_EQ(n, 4); - - fclose(f); - - ATF_CHECK_STREQ(buf, "1000"); - - if ((n > 0) && (!strcmp(buf, "1000"))) - unlink("fprintf.test"); -} - -/* - * Main - */ -ATF_TP_ADD_TCS(tp) { - ATF_TP_ADD_TC(tp, snprintf); - ATF_TP_ADD_TC(tp, fprintf); - return (atf_no_error()); -}