[freeside-commits] freeside/bin rotate-cdrs,NONE,1.1
Ivan,,,
ivan at wavetail.420.am
Fri Feb 16 14:06:36 PST 2007
Update of /home/cvs/cvsroot/freeside/bin
In directory wavetail:/tmp/cvs-serv31962
Added Files:
rotate-cdrs
Log Message:
commiting this quick tool, cvs is complaining
--- NEW FILE: rotate-cdrs ---
#!/usr/bin/perl -w
use strict;
use Fcntl qw(:flock);
use IO::File;
my $dir = '/usr/local/etc/freeside/export/cdr';
#chdir $dir;
#XXX glob might not handle lots of args at some point...
foreach my $file ( glob("$dir/*/CDR*-spool.CSV") ) {
$file =~ m{(\d+)/CDR(\d+)-spool.CSV$}
or die "guru meditation #54: can't parse filename: $file\n";
my($custnum, $date) = ($1, $2);
my $alpha = 'A';
while ( -e "$dir/$custnum/CDR$date$alpha.CSV" ) {
$alpha++; # A -> Z -> AA etc.
}
my $newfile = "$dir/$custnum/CDR$date$alpha.CSV";
rename $file, $newfile
or die "$! moving $file to $newfile\n";
use IO::File;
my $lock = new IO::File ">>$newfile"
or die "can't open $newfile: $!\n";
sleep 1; #just in case. i guess there's still a *remotely* possible
#race condition, but i'm not losing any sleep over it... (rimshot)
flock($lock, LOCK_EX)
or die "can't lock $newfile: $!\n";
#okay we've got the lock, any pending write should be done...
print "$custnum: $newfile\n";
}
More information about the freeside-commits
mailing list