$script = Maasha::Common::get_scriptname();
$pid = Maasha::Common::get_processid();
- $file = "$ENV{ 'BP_TMP' }/" . join( ".", $user, $script, $pid ) . ".status";
+ $file = bp_tmp() . "/" . join( ".", $user, $script, $pid ) . ".status";
$fh = Maasha::Filesys::file_write_open( $file );
+ flock($fh, 2);
print $fh join( ";", $time_stamp, join( " ", @ARGV ) ) . "\n";
$script = Maasha::Common::get_scriptname();
$pid = Maasha::Common::get_processid();
- $file = "$ENV{ 'BP_TMP' }/" . join( ".", $user, $script, $pid ) . ".status";
+ $file = bp_tmp() . "/" . join( ".", $user, $script, $pid ) . ".status";
return if not -f $file;
$fh = Maasha::Filesys::file_read_open( $file );
+ flock($fh, 1);
$line = <$fh>;
chomp $line;
close $fh;
$elap = Maasha::Common::time_stamp_diff( $time0, $time1 );
$fh_global = Maasha::Filesys::file_append_open( "$ENV{ 'BP_LOG' }/biopieces.log" );
+ flock($fh_global, 2);
$fh_local = Maasha::Filesys::file_append_open( "$ENV{ 'HOME' }/.biopieces.log" );
+ flock($fh_local, 2);
print $fh_global join( "\t", $time0, $time1, $elap, $user, $status, "$script $args" ) . "\n";
print $fh_local join( "\t", $time0, $time1, $elap, $user, $status, "$script $args" ) . "\n";
# Returns nothing.
- my ( $time_stamp, $user, $script, $fh_global, $fh_local );
+ my ( $time_stamp, $user, $script, $fh );
$time_stamp = Maasha::Common::time_stamp();
$user = Maasha::Common::get_user();
$script = Maasha::Common::get_scriptname();
- $fh_global = Maasha::Filesys::file_append_open( "$ENV{ 'BP_LOG' }/biopieces.log" );
- $fh_local = Maasha::Filesys::file_append_open( "$ENV{ 'HOME' }/.biopieces.log" );
+ $fh = Maasha::Filesys::file_append_open( "$ENV{ 'BP_LOG' }/biopieces.log" );
+ flock($fh, 2);
- print $fh_global "$time_stamp\t$user\t$script ", join( " ", @ARGV ), "\n";
- print $fh_local "$time_stamp\t$user\t$script ", join( " ", @ARGV ), "\n";
+ print $fh "$time_stamp\t$user\t$script ", join( " ", @ARGV ), "\n";
- $fh_global->autoflush( 1 );
- $fh_local->autoflush( 1 );
+ $fh->autoflush( 1 );
- close $fh_global;
- close $fh_local;
+ close $fh;
}
elsif ( $sig eq "INT" )
{
print STDERR "\nProgram '$script' interrupted (ctrl-c was pressed)" . " - Please wait for temporary data to be removed\n";
- status_log( "INTERUPTED" );
+ status_log( "INTERRUPTED" );
}
elsif ( $sig eq "TERM" )
{
my ( $tmpdir, @dirs, $curr_pid, $dir, $user, $sid, $pid );
- $tmpdir = $ENV{ 'BP_TMP' } || Maasha::Common::error( 'No BP_TMP variable in environment.' );
+ $tmpdir = bp_tmp();
$curr_pid = Maasha::Common::get_processid();
my ( $user, $sid, $pid, $script, $path, $file, $fh, $line );
- Maasha::Common::error( qq(no BP_TMP set in %ENV) ) if not -d $ENV{ 'BP_TMP' };
-
$user = Maasha::Common::get_user();
$sid = Maasha::Common::get_sessionid();
$pid = Maasha::Common::get_processid();
$script = Maasha::Common::get_scriptname();
- $path = "$ENV{ 'BP_TMP' }/" . join( "_", $user, $sid, $pid, "bp_tmp" );
- $file = "$ENV{ 'BP_TMP' }/" . join( ".", $user, $script, $pid ) . ".status";
+ $path = bp_tmp() . "/" . join( "_", $user, $sid, $pid, "bp_tmp" );
+ $file = bp_tmp() . "/" . join( ".", $user, $script, $pid ) . ".status";
$fh = Maasha::Filesys::file_read_open( $file );
+ flock($fh, 1);
$line = <$fh>;
chomp $line;
close $fh;
$fh = Maasha::Filesys::file_write_open( $file );
+ flock($fh, 2);
print $fh "$line;$path\n";
close $fh;
return undef if not -f $file;
$fh = Maasha::Filesys::file_read_open( $file );
+ flock($fh, 1);
$record = get_record( $fh );
close $fh;
}
}
+sub bp_tmp
+{
+ # Martin A. Hansen, March 2013.
+
+ # Returns the BP_TMP path.
+ # Errs if no BP_TMP in ENV and
+ # creates BP_TMP if it doesn't exists.
+
+ my ( $path );
+
+ Maasha::Common::error( qq(no BP_TMP set in %ENV) ) if not -d $ENV{ 'BP_TMP' };
+
+ $path = $ENV{ 'BP_TMP' };
+
+ unless ( -d $path ) { # No BP_TMP so we create it
+ mkdir $path or die qq(failed to create dir "$path": $!);
+ }
+
+ return $path;
+}
END
{