made binmode args for read_file and write_file be passed to binmode on
Uri Guttman [Wed, 11 Nov 2009 05:23:58 +0000 (00:23 -0500)]
the opened handles. you can use this to set any binmode layer.

still need to handle boolean 1 to be raw:

lib/File/Slurp.pm

index 1d043c3..73249c6 100755 (executable)
@@ -154,7 +154,6 @@ ERR
 # a regular file. set the sysopen mode
 
                my $mode = O_RDONLY ;
-               $mode |= O_BINARY if $args{'binmode'} ;
 
 #printf "RD: BINARY %x MODE %x\n", O_BINARY, $mode ;
 
@@ -166,6 +165,10 @@ ERR
                        goto &_error ;
                }
 
+               if ( my $binmode = $args{'binmode'} ) {
+                       binmode( $read_fh, $binmode ) ;
+               }
+
 # get the size of the file for use in the read loop
 
                $size_left = -s $read_fh ;
@@ -336,7 +339,6 @@ sub write_file {
 # set the mode for the sysopen
 
                my $mode = O_WRONLY | O_CREAT ;
-               $mode |= O_BINARY if $args->{'binmode'} ;
                $mode |= O_APPEND if $args->{'append'} ;
                $mode |= O_EXCL if $args->{'no_clobber'} ;
 
@@ -351,6 +353,10 @@ sub write_file {
                }
        }
 
+       if ( my $binmode = $args{'binmode'} ) {
+               binmode( $write_fh, $binmode ) ;
+       }
+
        sysseek( $write_fh, 0, SEEK_END ) if $args->{'append'} ;