# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+use warnings;
use strict;
use IO::File;
use Storable;
+use Data::Dumper;
use Maasha::Common;
+use Digest::MD5;
use Exporter;
# returns integer
- my $file_size = ( stat ( $path ) )[ 7 ];
+ my $file_size = -s $path;
return $file_size;
}
+sub file_md5
+{
+ # Martin A. Hansen, December 2009.
+
+ # Get an MD5 sum for a given file.
+
+ my ( $file, # file path
+ ) = @_;
+
+ # Returns a string.
+
+ my ( $fh, $md5 );
+
+ $fh = file_read_open( $file );
+
+ $md5 = Digest::MD5->new;
+
+ $md5->addfile( $fh );
+
+ close $fh;
+
+ return $md5->hexdigest;
+}
+
+
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DIRECTORIES <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
my ( $path, # full path to dir
) = @_;
- # Returns nothing.
+ # Returns created path.
if ( -d $path ) {
- Maasha::Common::error( qq(Directory already exists "$path": $!) );
+ Maasha::Common::error( qq(Directory already exists "$path") );
} else {
mkdir $path or Maasha::Common::error( qq(Could not create directory "$path": $!) );
}
+
+ return $path;
}
my ( $path, # full path to dir
) = @_;
- # Returns nothing.
+ # Returns path.
if ( not -d $path ) {
mkdir $path or Maasha::Common::error( qq(Could not create directory "$path": $!) );
}
+
+ return $path;
}
close $dh;
+ @dirs = sort @dirs;
+
return wantarray ? @dirs : \@dirs;
}
+sub ls_dirs_base
+{
+ # Martin A. Hansen, November 2009.
+
+ # Returns all directory basenames execpt . and ..
+ # from a given directory.
+
+ my ( $path,
+ ) = @_;
+
+ # Returns a list.
+
+ my ( @dirs, $dir, @list );
+
+ @dirs = Maasha::Filesys::ls_dirs( $path );
+
+ foreach $dir ( @dirs )
+ {
+ next if $dir =~ /\/\.\.?$/;
+
+ push @list, ( split "/", $dir )[ -1 ];
+ }
+
+ return wantarray ? @list : \@list;
+}
+
+
sub ls_files
{
# Martin A. Hansen, June 2007.