diff options
author | Nicholas Clark <nick@ccl4.org> | 2001-08-23 00:29:06 +0100 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2001-08-25 14:52:33 +0000 |
commit | e940ddbba91304b2a80fdaa904f5b12c22b13e0a (patch) | |
tree | 85c91ca3396fe501cdf9e4b4a81c05766f2a48ff | |
parent | c5cf9ec268be725ef943af3a8c93c6ce5c5492de (diff) | |
download | perl-e940ddbba91304b2a80fdaa904f5b12c22b13e0a.tar.gz |
(was Re: PerlIO regerssion tests?)
Message-Id: <20010822232906.Z82818@plum.flirble.org>
p4raw-id: //depot/perl@11747
-rw-r--r-- | perlio.c | 5 | ||||
-rw-r--r-- | pod/perlfunc.pod | 5 | ||||
-rw-r--r-- | t/io/binmode.t | 20 |
3 files changed, 26 insertions, 4 deletions
@@ -1968,7 +1968,10 @@ PerlIOUnix_pushed(PerlIO *f, const char *mode, SV *arg) { PerlIOUnix *s = PerlIOSelf(f,PerlIOUnix); s->fd = PerlIO_fileno(PerlIONext(f)); - s->oflags = PerlIOUnix_oflags(mode); + /* XXX could (or should) we retrieve the oflags from the open file handle + rather than believing the "mode" we are passed in? + XXX Should the value on NULL mode be 0 or -1? */ + s->oflags = mode ? PerlIOUnix_oflags(mode) : -1; } PerlIOBase(f)->flags |= PERLIO_F_OPEN; return code; diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index b4c37112c7..951fadab52 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -450,13 +450,12 @@ on systems where the run-time libraries distinguish between binary and text files. If FILEHANDLE is an expression, the value is taken as the name of the filehandle. DISCIPLINE can be either of C<":raw"> for binary mode or C<":crlf"> for "text" mode. If the DISCIPLINE is -omitted, it defaults to C<":raw">. +omitted, it defaults to C<":raw">. Returns true on success, C<undef> on +failure. binmode() should be called after open() but before any I/O is done on the filehandle. -On many systems binmode() currently has no effect, but in future, it -will be extended to support user-defined input and output disciplines. On some systems binmode() is necessary when you're not working with a text file. For the sake of portability it is a good idea to always use it when appropriate, and to never use it when it isn't appropriate. diff --git a/t/io/binmode.t b/t/io/binmode.t new file mode 100644 index 0000000000..76fd5a7779 --- /dev/null +++ b/t/io/binmode.t @@ -0,0 +1,20 @@ +#!./perl -w + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; +} + + +use Test::More tests => 8; + +ok( binmode(STDERR), 'STDERR made binary' ); +ok( binmode(STDERR, ":unix"), ' with unix discipline' ); +ok( binmode(STDERR, ":raw"), ' raw' ); +ok( binmode(STDERR, ":crlf"), ' and crlf' ); + +# If this one fails, we're in trouble. So we just bail out. +ok( binmode(STDOUT), 'STDOUT made binary' ) || exit(1); +ok( binmode(STDOUT, ":unix"), ' with unix discipline' ); +ok( binmode(STDERR, ":raw"), ' raw' ); +ok( binmode(STDERR, ":crlf"), ' and crlf' ); |