Just like bio_out, bio_err needs the linebuffer filter on VMS
authorRichard Levitte <levitte@openssl.org>
Mon, 21 Mar 2016 17:30:30 +0000 (18:30 +0100)
committerRichard Levitte <levitte@openssl.org>
Mon, 21 Mar 2016 17:46:49 +0000 (18:46 +0100)
Reviewed-by: Rich Salz <rsalz@openssl.org>
apps/apps.c
apps/apps.h
apps/openssl.c

index b430742..128f387 100644 (file)
@@ -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);
index 7be7325..fc480e1 100644 (file)
@@ -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);
index d460a6b..2d9ddaa 100644 (file)
@@ -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);