#!/usr/bin/perl # # Contains directory operations (walkthrough etc.) # package dirops; our $SPOOL = "/usr/backup/spool_zayavki"; our $IMAGE = "/usr/backup/images/zayavki"; our $SIZE_MIN = 4294967296; # 4.00 GB (stands for 4.00 * 1024 ^ 3) our $SIZE_MAX = 4563402752; # 4.25 GB (stands for 4.25 * 1024 ^ 3) our @allfiles; # static array to keep files our $offset = 0; our $f_sizeof; our $a_sizeof = 0; our $a_count = 0; our @a; sub walkthrough() { # chdir($SPOOL); my @dirents = `ls -m $SPOOL`; my @str; for(my $i = 0; $i< scalar(@dirents); $i++) { chomp($dirents[$i]); @str = split(', ', $dirents[$i]); push @allfiles, @str; } } sub getnextblk() { $a_sizeof = 0; @a = (); return( () ) if($offset == scalar(@allfiles)); for(my $i = $offset; $i < scalar(@allfiles); $i++ ) { $f_sizeof = -s "$SPOOL/$allfiles[$i]"; # check sizes if( $f_sizeof <= $SIZE_MAX - $a_sizeof) { $a_sizeof += $f_sizeof; $a_count++; push @a, "$SPOOL/$allfiles[$i]"; } else { # $SIZE_MAX exceeded # # really don't assume BIG files # $offset = $i; return(@a); } } if($a_sizeof < $SIZE_MIN ) { return( ( ) ); #NOTREACHED } return(@a); } return(1);