WebTools

 view release on metacpan or  search on metacpan

lib/libs/deepwalk.pl  view on Meta::CPAN

}

sub dw_copy_file
{
 my $source = shift;
 my $target = shift;
 my $umask  = shift;
 local * SRCFILE;
 local * DSTFILE;
 my $orig_mask;
 my $buffer;
 
 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($source);
 
 if($umask ne undef)
  {
   $orig_mask = umask $umask;
  }
 
 open(SRCFILE,$source) or return(-1);
 binmode SRCFILE;
 
 open(DSTFILE,'>'.$target) or do {
  close SRCFILE;
  return(-2);
 };
 
 binmode DSTFILE;
 
 while(1)
   {
    my $result = read(SRCFILE,$buffer,$deepWalk_file_buffer);
    if($result == 0)
      {
       last;
      }
    if($result eq undef)               # Error!
      {
       close SRCFILE;
       close DSTFILE;
       return(-3);
      }
    if(!(print DSTFILE $buffer))
      {
       close SRCFILE;
       close DSTFILE;
       return(-4);
      }
   }
 
 close SRCFILE;
 close DSTFILE;
 
 if($umask eq undef)
  {
   chmod ($mode, $target);
  }
  
 if($< == 0)
  {
   chown $uid, $gid, $target;
  }
 
 utime ($atime, $mtime, $target);
 umask $orig_mask;
 return(1);
}

sub recursive_mkdir
{
 my $folder = shift;
 my $umask  = shift;
 
 my $q_slash = quotemeta($system_slash);
 my @paths = split(/$q_slash/s,$folder);
 
 my $path;
 my $full_path = '';
 foreach $path (@paths)
  {
   $full_path .= $path.$system_slash;
   if($umask ne undef)
     {
      my $orig_mask = umask $umask;
      mkdir($full_path,0777);
      umask $orig_mask;
     }
    else
     {
      mkdir($full_path,0777);
     }
  }
}

sub dw_copy
{
 return(-1) if(scalar(@_) < 2);
 my $source = shift;
 my $target = shift;
 my $umask  = $_[0] eq '' ? shift : undef;
 my $folder;
 my $counter_strike = 0;
 
 my $q_slash = quotemeta($system_slash);
 
 # Repair wrong slashes: \\ to / in Unix like OS and / to \\ in Dos like OS.
 if($system_slash =~ m/\\/si)
  {
   $source =~ s/\//$system_slash/sg;
   $target =~ s/\//$system_slash/sg;
  }
 if($system_slash =~ m/\//si)
  {
   $source =~ s/\\/$system_slash/sg;
   $target =~ s/\\/$system_slash/sg;
  }
 
 if(-d $source)
  {
   $target =~ s/$q_slash$//s;
   if(!($source =~ m/$q_slash$/s))



( run in 0.557 second using v1.01-cache-2.11-cpan-5511b514fd6 )