lumia

Archive checksum manager
git clone git://lumidify.org/git/lumia.git
Log | Files | Refs

commit 15d5db13de4e74e63ecf44a0d687712124a6bca8
parent b2a3055319a2c8e8d2ba0f0ba05411c4d5dcf746
Author: lumidify <nobody@lumidify.org>
Date:   Sun, 22 Mar 2020 15:19:52 +0100

Add make_dir_iter

Diffstat:
Mlumia.pl | 24++++++++++++++++++++++++
1 file changed, 24 insertions(+), 0 deletions(-)

diff --git a/lumia.pl b/lumia.pl @@ -32,6 +32,30 @@ use Cwd qw(getcwd); use POSIX qw(SIGINT); use Data::Dumper; use Scalar::Util qw(looks_like_number); +use Getopt::Long; + +sub make_dir_iter { + my @queue = @_; + return sub { + while (@queue) { + my $file = shift @queue; + if (!-d $file) { + warn "WARNING: \"$file\" is not directory!"; + next; + } + my $dh; + if (!opendir $dh, $file) { + warn "WARNING: Unable to open directory \"$file\"!"; + next; + } + my @newdirs = grep {-d "$file/$_" && $_ ne "." && $_ ne ".."} readdir $dh; + push @queue, map "$file/$_", @newdirs; + closedir $dh; + return $file; + } + return; + }; +} my $CKSUM_CMD = 'cksum -q'; my $CKSUM_CHECK_CMD = 'cksum -c';