X-Git-Url: https://git.p6c8.net/devedit.git/blobdiff_plain/d87c7b145a2f8ca073a19d38b39856b328a69c1d..6cbef69555b48386fee70b73bac2c3df4d15ff6a:/modules/File/Access.pm?ds=inline diff --git a/modules/File/Access.pm b/modules/File/Access.pm index 70a1c04..e0f4e55 100644 --- a/modules/File/Access.pm +++ b/modules/File/Access.pm @@ -7,7 +7,7 @@ package File::Access; # using only one command # # Author: Patrick Canterino -# Last modified: 2005-04-09 +# Last modified: 2005-07-05 # use strict; @@ -18,11 +18,14 @@ use vars qw(@EXPORT use Fcntl qw(:DEFAULT :flock); +use File::Copy; + ### Export ### use base qw(Exporter); -@EXPORT = qw(dir_read +@EXPORT = qw(dir_copy + dir_read file_create file_lock file_read @@ -38,6 +41,49 @@ use base qw(Exporter); $has_flock = eval { local $SIG{'__DIE__'}; flock(STDOUT,0); 1 }; +# dir_copy() +# +# Copy a directory +# +# Params: 1. Directory to copy +# 2. Target +# +# Return: Status code (Boolean) + +sub dir_copy($$) +{ + my ($dir,$target) = @_; + + return unless(-d $dir); + + my $entries = dir_read($dir) or return; + + my $dirs = $entries->{'dirs'}; + my $files = $entries->{'files'}; + + mkdir($target,0777) unless(-d $target); + + foreach my $directory(@$dirs) + { + unless(-d $target.'/'.$directory) + { + mkdir($target.'/'.$directory,0777) or next; + } + + if(-r $target.'/'.$directory && -x $target.'/'.$directory) + { + dir_copy($dir.'/'.$directory,$target.'/'.$directory) or next; + } + } + + foreach my $file(@$files) + { + copy($dir.'/'.$file,$target.'/'.$file) or next; + } + + return 1; +} + # dir_read() # # Collect the files and directories in a directory