home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_ste.zip / auto / Net / FTP / _data_cmd.al < prev    next >
Text File  |  1997-11-28  |  1KB  |  67 lines

  1. # NOTE: Derived from ./blib/lib/Net/FTP.pm.  Changes made here will be lost.
  2. package Net::FTP;
  3.  
  4. sub _data_cmd
  5. {
  6.  my $ftp = shift;
  7.  my $cmd = uc shift;
  8.  my $ok = 1;
  9.  my $where = delete ${*$ftp}{'net_ftp_rest'} || 0;
  10.  
  11.  if(${*$ftp}{'net_ftp_passive'} &&
  12.      !defined ${*$ftp}{'net_ftp_pasv'} &&
  13.      !defined ${*$ftp}{'net_ftp_port'})
  14.   {
  15.    my $data = undef;
  16.  
  17.    $ok = defined $ftp->pasv;
  18.    $ok = $ftp->_REST($where)
  19.     if $ok && $where;
  20.  
  21.    if($ok)
  22.     {
  23.      $ftp->command($cmd,@_);
  24.      $data = $ftp->_dataconn();
  25.      $ok = CMD_INFO == $ftp->response();
  26.      if($ok) 
  27.       {
  28.        $data->reading
  29.          if $data && $cmd =~ /RETR|LIST|NLST/;
  30.        return $data
  31.       }
  32.      $data->_close
  33.     if $data;
  34.     }
  35.    return undef;
  36.   }
  37.  
  38.  $ok = $ftp->port
  39.     unless (defined ${*$ftp}{'net_ftp_port'} ||
  40.             defined ${*$ftp}{'net_ftp_pasv'});
  41.  
  42.  $ok = $ftp->_REST($where)
  43.     if $ok && $where;
  44.  
  45.  return undef
  46.     unless $ok;
  47.  
  48.  $ftp->command($cmd,@_);
  49.  
  50.  return 1
  51.     if(defined ${*$ftp}{'net_ftp_pasv'});
  52.  
  53.  $ok = CMD_INFO == $ftp->response();
  54.  
  55.  return $ok 
  56.     unless exists ${*$ftp}{'net_ftp_intern_port'};
  57.  
  58.  return $ftp->_dataconn()
  59.     if $ok;
  60.  
  61.  close(delete ${*$ftp}{'net_ftp_listen'});
  62.  
  63.  return undef;
  64. }
  65.  
  66. 1;
  67.