aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-03-21 18:30:30 +0100
committerRichard Levitte <levitte@openssl.org>2016-03-21 18:46:49 +0100
commit149bd5d6cb3936480e64549902f058153eaf840b (patch)
treed0968ab0db8ee4d41f47ec68fef30c0e07fa5c29
parent367071f121d7e941846f612fba60dbb1d12cf9dd (diff)
downloadopenssl-149bd5d6cb3936480e64549902f058153eaf840b.tar.gz
Just like bio_out, bio_err needs the linebuffer filter on VMS
Reviewed-by: Rich Salz <rsalz@openssl.org>
-rw-r--r--apps/apps.c11
-rw-r--r--apps/apps.h1
-rw-r--r--apps/openssl.c2
3 files changed, 13 insertions, 1 deletions
diff --git a/apps/apps.c b/apps/apps.c
index b4307427a5..128f387593 100644
--- a/apps/apps.c
+++ b/apps/apps.c
@@ -2486,6 +2486,17 @@ BIO *dup_bio_out(int format)
return b;
}
+BIO *dup_bio_err(int format)
+{
+ BIO *b = BIO_new_fp(stderr,
+ BIO_NOCLOSE | (istext(format) ? BIO_FP_TEXT : 0));
+#ifdef OPENSSL_SYS_VMS
+ if (istext(format))
+ b = BIO_push(BIO_new(BIO_f_linebuffer()), b);
+#endif
+ return b;
+}
+
void unbuffer(FILE *fp)
{
setbuf(fp, NULL);
diff --git a/apps/apps.h b/apps/apps.h
index 7be7325429..fc480e16c8 100644
--- a/apps/apps.h
+++ b/apps/apps.h
@@ -156,6 +156,7 @@ extern BIO *bio_out;
extern BIO *bio_err;
BIO *dup_bio_in(int format);
BIO *dup_bio_out(int format);
+BIO *dup_bio_err(int format);
BIO *bio_open_owner(const char *filename, int format, int private);
BIO *bio_open_default(const char *filename, char mode, int format);
BIO *bio_open_default_quiet(const char *filename, char mode, int format);
diff --git a/apps/openssl.c b/apps/openssl.c
index d460a6b886..2d9ddaa56b 100644
--- a/apps/openssl.c
+++ b/apps/openssl.c
@@ -229,7 +229,7 @@ int main(int argc, char *argv[])
default_config_file = make_config_name();
bio_in = dup_bio_in(FORMAT_TEXT);
bio_out = dup_bio_out(FORMAT_TEXT);
- bio_err = BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT);
+ bio_err = dup_bio_err(FORMAT_TEXT);
#if defined( OPENSSL_SYS_VMS)
copied_argv = argv = copy_argv(&argc, argv);