diff options
author | Richard Levitte <levitte@openssl.org> | 2000-08-18 09:36:59 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2000-08-18 09:36:59 +0000 |
commit | e6629837a9794e25570f4fa3f2d90b51e00762e1 (patch) | |
tree | 1fba716d2eb5b08fd51ee0b3fff716515523fc7e /crypto/bio | |
parent | 97a377b973acdeb2b207d8e43916574654df51e0 (diff) |
Added BIO_vprintf() and BIO_vsnprintf(). The former because I've
found myself needing it a number of times, the latter for completeness.
Diffstat (limited to 'crypto/bio')
-rw-r--r-- | crypto/bio/b_print.c | 29 | ||||
-rw-r--r-- | crypto/bio/bio.h | 3 |
2 files changed, 27 insertions, 5 deletions
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 <stdio.h> -#include <stdarg.h> #include <string.h> #include <ctype.h> #include <assert.h> @@ -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 <stdio.h> #endif +#include <stdarg.h> #include <openssl/crypto.h> @@ -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 |