From c2801c794b9bcdcfecb9ce95bc1d449e6c58b128 Mon Sep 17 00:00:00 2001 From: Gustavo De Nardin Date: Sat, 12 May 2007 20:11:53 +0000 Subject: Restoring code lost in the SVN breakage from an old checkout --- lib/Iurt/File.pm | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 lib/Iurt/File.pm (limited to 'lib/Iurt/File.pm') diff --git a/lib/Iurt/File.pm b/lib/Iurt/File.pm new file mode 100644 index 0000000..ba5f718 --- /dev/null +++ b/lib/Iurt/File.pm @@ -0,0 +1,68 @@ +package Iurt::File; + +use base qw(Exporter); +use Iurt::Util qw(plog); +use strict; + +our @EXPORT = qw( + check_upload_tree +); + +=head2 config_usage($config_usage, $config) + +Create an instance of a class at runtime. +I<$config_usage> is the configuration help, +I<%config> is the current configuration values +Return true. + +=cut + +sub check_upload_tree { + my ($_run, $todo, $func, $post) = @_; + + # Squash double slashes for cosmetics + $todo =~ s!/+!/!g; + + opendir my $dir, $todo; + plog('INFO', "check dir: $todo"); + + foreach my $f (readdir $dir) { + $f =~ /^\.{1,2}$/ and next; + if (-d "$todo/$f") { + plog('DEBUG', "checking target $todo/$f"); + opendir my $target_dir, "$todo/$f"; + + foreach my $m (readdir $target_dir) { + $m =~ /^\.{1,2}$/ and next; + if (-d "$todo/$f/$m") { + plog('DEBUG', "checking media $todo/$f/$m"); + opendir my $media_dir, "$todo/$f/$m"; + + foreach my $s (readdir $media_dir) { + $s =~ /^\.{1,2}$/ and next; + if (-d "$todo/$f/$m/$s") { + if ($func) { + opendir my $submedia_dir, "$todo/$f/$m/$s"; + foreach my $r (readdir $submedia_dir) { + $r =~ /^\.{1,2}$/ and next; + $func->($todo, $f, $m, $s, $r); + } + } + # cleaning + if ($post) { + opendir my $submedia_dir, "$todo/$f/$m/$s"; + foreach my $r (readdir $submedia_dir) { + $r =~ /^\.{1,2}$/ and next; + $post->($todo, $f, $m, $s, $r); + } + } + } else { + # may need to check also here for old target + } + } + } + } + } + } +} + -- cgit v1.2.1