Push the line buffer filter on the out BIO on VMS
authorRichard Levitte <levitte@openssl.org>
Thu, 30 Apr 2015 17:52:36 +0000 (19:52 +0200)
committerRichard Levitte <levitte@openssl.org>
Mon, 7 Sep 2015 14:10:58 +0000 (16:10 +0200)
VMS files are normally record oriented rather than stream oriented.
This means that every write() will create a new record, which is seen
as a line of its own, regardless of if there was a \n in there or not.
bntest uses BN_print, which prints out number with more than one
write(), thereby dividing up the numbers in several lines, which
greatly disturbs the post-bntest checks that expect to find a full
formula to calculate on one line.

So, for VMS, we need to push the linebuffer filter on the out BIO.

Reviewed-by: Rich Salz <rsalz@openssl.org>
test/bntest.c

index 675d0eb2613a2b3851d4997c11fb32175dbe2d30..be358c82d14cae1f1d226d9f307361bb3b3dedf6 100644 (file)
@@ -175,6 +175,12 @@ int main(int argc, char *argv[])
             EXIT(1);
         }
     }
+#ifdef OPENSSL_SYS_VMS
+    {
+        BIO *tmpbio = BIO_new(BIO_f_linebuffer());
+        out = BIO_push(tmpbio, out);
+    }
+#endif
 
     if (!results)
         BIO_puts(out, "obase=16\nibase=16\n");