X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=code_perl%2FMaasha%2FBiopieces.pm;h=434cdad8cf738328478eba8a4d6a3e154a2824a2;hb=8d375c58a048400bc06ce223bbb3315060b3b471;hp=d83b2d94e6ad79c4aa9ac5f9f9240fb959916f8c;hpb=9dd5f6e22d26a57926facec39bbcb1d65e2b366b;p=biopieces.git diff --git a/code_perl/Maasha/Biopieces.pm b/code_perl/Maasha/Biopieces.pm index d83b2d9..434cdad 100644 --- a/code_perl/Maasha/Biopieces.pm +++ b/code_perl/Maasha/Biopieces.pm @@ -68,8 +68,9 @@ sub status_set $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"; @@ -98,11 +99,12 @@ sub status_log $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; @@ -116,7 +118,9 @@ sub status_log $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"; @@ -137,23 +141,20 @@ sub log_biopiece # 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; } @@ -783,7 +784,7 @@ sub clean_tmp 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(); @@ -829,22 +830,22 @@ sub get_tmpdir 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; @@ -873,6 +874,7 @@ sub biopiecesrc return undef if not -f $file; $fh = Maasha::Filesys::file_read_open( $file ); + flock($fh, 1); $record = get_record( $fh ); close $fh; @@ -883,6 +885,26 @@ sub biopiecesrc } } +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 {