summaryrefslogtreecommitdiffstats
path: root/crypto/bio
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2000-08-18 09:36:59 +0000
committerRichard Levitte <levitte@openssl.org>2000-08-18 09:36:59 +0000
commite6629837a9794e25570f4fa3f2d90b51e00762e1 (patch)
tree1fba716d2eb5b08fd51ee0b3fff716515523fc7e /crypto/bio
parent97a377b973acdeb2b207d8e43916574654df51e0 (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.c29
-rw-r--r--crypto/bio/bio.h3
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