diff --git a/CreatePackageDescr.pm b/CreatePackageDescr.pm index 8b27181f..65ac82aa 100644 --- a/CreatePackageDescr.pm +++ b/CreatePackageDescr.pm @@ -7,7 +7,7 @@ BEGIN { use File::Basename; use Rpm; -use Fcntl; +use Fcntl qw/:flock/; sub package_snippet($) { @@ -18,7 +18,8 @@ sub package_snippet($) { my $out = ''; if ( -f $cachefile ) { - open( C, $cachefile ) || die "no cache for $package"; + open( C, '<', $cachefile ) || die "no cache for $package"; + flock(C, LOCK_SH) or die "failed to lock $cachefile: $!\n"; while () { $out .= $_; } @@ -152,7 +153,9 @@ sub package_snippet($) { $out .= "-Sug:\n"; mkdir($cachedir); - open( C, '>', $cachefile ) || die "can't write $cachefile"; + open( C, '>>', $cachefile ) || die "can't open $cachefile"; + flock(C, LOCK_EX) or die "failed to lock $cachefile: $!\n"; + seek(C, 0, 0); truncate(C, 0); print C $out; close(C);