URI: 
       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';