From: Richard Levitte Date: Fri, 18 Aug 2000 09:36:59 +0000 (+0000) Subject: Added BIO_vprintf() and BIO_vsnprintf(). The former because I've X-Git-Tag: OpenSSL-engine-0_9_6-beta1~12^2~54 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=e6629837a9794e25570f4fa3f2d90b51e00762e1 Added BIO_vprintf() and BIO_vsnprintf(). The former because I've found myself needing it a number of times, the latter for completeness. --- diff --git a/CHANGES b/CHANGES index 078c2b6a0d..853fe0e1f3 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,9 @@ Changes between 0.9.5a and 0.9.6 [xx XXX 2000] + *) Added BIO_vprintf() and BIO_vsnprintf(). + [Richard Levitte] + *) Added more prefixes to parse for in the the strings written through a logging bio, to cover all the levels that are available through syslog. The prefixes are now: diff --git a/crypto/bio/b_print.c b/crypto/bio/b_print.c index aafa85bd12..349109b213 100644 --- a/crypto/bio/b_print.c +++ b/crypto/bio/b_print.c @@ -61,7 +61,6 @@ */ #include -#include #include #include #include @@ -812,6 +811,18 @@ int BIO_printf (BIO *bio, const char *format, ...) { va_list args; int ret; + + va_start(args, format); + + ret = BIO_vprintf(bio, format, args); + + va_end(args); + return(ret); + } + +int BIO_vprintf (BIO *bio, const char *format, va_list args) + { + int ret; size_t retlen; #ifdef USE_ALLOCATING_PRINT char *hugebuf; @@ -819,8 +830,6 @@ int BIO_printf (BIO *bio, const char *format, ...) MS_STATIC char hugebuf[1024*2]; /* 10k in one chunk is the limit */ #endif - va_start(args, format); - #ifndef USE_ALLOCATING_PRINT hugebuf[0]='\0'; dopr(hugebuf, sizeof(hugebuf), &retlen, format, args); @@ -838,7 +847,6 @@ int BIO_printf (BIO *bio, const char *format, ...) } CRYPTO_pop_info(); #endif - va_end(args); return(ret); } @@ -849,10 +857,21 @@ int BIO_printf (BIO *bio, const char *format, ...) int BIO_snprintf(char *buf, size_t n, const char *format, ...) { va_list args; + int ret; + + va_start(args, format); + + ret = BIO_vsnprintf(buf, n, format, args); + + va_end(args); + return(ret); + } + +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) + { size_t retlen; int truncated; - va_start(args, format); _dopr(dopr_outch, dopr_isbig, dopr_copy, &buf, &n, &retlen, &truncated, format, args); if (truncated) diff --git a/crypto/bio/bio.h b/crypto/bio/bio.h index 76748e05d8..c7273932e7 100644 --- a/crypto/bio/bio.h +++ b/crypto/bio/bio.h @@ -62,6 +62,7 @@ #ifndef NO_FP_API # include #endif +#include #include @@ -600,7 +601,9 @@ void BIO_copy_next_retry(BIO *b); long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); int BIO_printf(BIO *bio, const char *format, ...); +int BIO_vprintf(BIO *bio, const char *format, va_list args); int BIO_snprintf(char *buf, size_t n, const char *format, ...); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args); /* BEGIN ERROR CODES */ /* The following lines are auto generated by the script mkerr.pl. Any changes