tAdd make_dir_iter - lumia - Archive checksum manager
HTML git clone git://lumidify.org/git/lumia.git
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 15d5db13de4e74e63ecf44a0d687712124a6bca8
DIR parent b2a3055319a2c8e8d2ba0f0ba05411c4d5dcf746
HTML Author: lumidify <nobody@lumidify.org>
Date: Sun, 22 Mar 2020 15:19:52 +0100
Add make_dir_iter
Diffstat:
M lumia.pl | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+), 0 deletions(-)
---
DIR diff --git a/lumia.pl b/lumia.pl
t@@ -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';