Upgrade to libnet 1.21
[p5sagit/p5-mst-13.2.git] / lib / Net / FTP / I.pm
index 69619e7..449bb99 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: //depot/libnet/Net/FTP/I.pm#13 $
+## 
 ## Package to read/write on BINARY data connections
 ##
 
@@ -9,20 +9,22 @@ use Carp;
 
 require Net::FTP::dataconn;
 
-@ISA = qw(Net::FTP::dataconn);
-$VERSION = "1.12"; 
+@ISA     = qw(Net::FTP::dataconn);
+$VERSION = "1.12";
+
 
 sub read {
-  my    $data   = shift;
-  local *buf    = \$_[0]; shift;
-  my    $size    = shift || croak 'read($buf,$size,[$timeout])';
-  my    $timeout = @_ ? shift : $data->timeout;
+  my $data = shift;
+  local *buf = \$_[0];
+  shift;
+  my $size = shift || croak 'read($buf,$size,[$timeout])';
+  my $timeout = @_ ? shift: $data->timeout;
 
   my $n;
 
   if ($size > length ${*$data} and !${*$data}{'net_ftp_eof'}) {
-    $data->can_read($timeout) or
-          croak "Timeout";
+    $data->can_read($timeout)
+      or croak "Timeout";
 
     my $blksize = ${*$data}{'net_ftp_blksize'};
     $blksize = $size if $size > $blksize;
@@ -33,36 +35,40 @@ sub read {
     }
   }
 
-  $buf = substr(${*$data},0,$size);
+  $buf = substr(${*$data}, 0, $size);
 
   $n = length($buf);
 
-  substr(${*$data},0,$n) = '';
+  substr(${*$data}, 0, $n) = '';
 
   ${*$data}{'net_ftp_bytesread'} += $n;
 
   $n;
 }
 
+
 sub write {
-  my    $data    = shift;
-  local *buf     = \$_[0]; shift;
-  my    $size    = shift || croak 'write($buf,$size,[$timeout])';
-  my    $timeout = @_ ? shift : $data->timeout;
+  my $data = shift;
+  local *buf = \$_[0];
+  shift;
+  my $size = shift || croak 'write($buf,$size,[$timeout])';
+  my $timeout = @_ ? shift: $data->timeout;
 
   # If the remote server has closed the connection we will be signal'd
   # when we write. This can happen if the disk on the remote server fills up
 
-  local $SIG{PIPE} = 'IGNORE' unless $^O eq 'MacOS';
+  local $SIG{PIPE} = 'IGNORE'
+    unless ($SIG{PIPE} || '') eq 'IGNORE'
+    or $^O eq 'MacOS';
   my $sent = $size;
-  my $off = 0;
+  my $off  = 0;
 
   my $blksize = ${*$data}{'net_ftp_blksize'};
-  while($sent > 0) {
-    $data->can_write($timeout) or
-        croak "Timeout";
+  while ($sent > 0) {
+    $data->can_write($timeout)
+      or croak "Timeout";
 
-    my $n = syswrite($data, $buf, $sent > $blksize ? $blksize : $sent ,$off);
+    my $n = syswrite($data, $buf, $sent > $blksize ? $blksize : $sent, $off);
     return undef unless defined($n);
     $sent -= $n;
     $off += $n;