delete $::param{$item};
}
}
- mkdir("data", 0777);
- chmod 0777, "data";
my $tmpname = "data/params.$$";
open(FID, ">$tmpname") || die "Can't create $tmpname";
my $v = $::param{'version'};
print FID "1;\n";
close FID;
rename $tmpname, "data/params" || die "Can't rename $tmpname to data/params";
- chmod 0666, "data/params";
+ ChmodDataFile('data/params', 0666);
}
#}
#$::SIG{__DIE__} = \&die_with_dignity;
+# Some files in the data directory must be world readable iff we don't have
+# a webserver group. Call this function to do this.
+sub ChmodDataFile($$) {
+ my ($file, $mask) = @_;
+ my $perm = 0770;
+ if ((stat('data'))[2] & 0002) {
+ $perm = 0777;
+ }
+ $perm = $perm & $mask;
+ chmod $perm,$file;
+}
+
sub ConnectToDatabase {
my ($useshadow) = (@_);
if (!defined $::db) {
my @list = sort { uc($a) cmp uc($b)} keys(%::versions);
@::legal_product = @list;
- mkdir("data", 0777);
- chmod 0777, "data";
my $tmpname = "data/versioncache.$$";
open(FID, ">$tmpname") || die "Can't create $tmpname";
print FID "1;\n";
close FID;
rename $tmpname, "data/versioncache" || die "Can't rename $tmpname to versioncache";
- chmod 0666, "data/versioncache";
+ ChmodDataFile('data/versioncache', 0666);
}
sub Lock {
if ($::lockcount <= 0) {
$::lockcount = 0;
- if (!open(LOCKFID, ">>data/maillock")) {
- mkdir "data", 0777;
- chmod 0777, "data";
- open(LOCKFID, ">>data/maillock") || die "Can't open lockfile.";
- }
+ open(LOCKFID, ">>data/maillock") || die "Can't open data/maillock: $!";
my $val = flock(LOCKFID,2);
if (!$val) { # '2' is magic 'exclusive lock' const.
print "Content-type: text/html\n\n";
sub Lock {
if ($::lockcount <= 0) {
$::lockcount = 0;
- if (!open(LOCKFID, ">>data/maillock")) {
- mkdir "data", 0777;
- chmod 0777, "data";
- open(LOCKFID, ">>data/maillock") || die "Can't open lockfile.";
- }
+ open(LOCKFID, ">>data/maillock") || die "Can't open data/maillock: $!";
my $val = flock(LOCKFID,2);
if (!$val) { # '2' is magic 'exclusive lock' const.
print "Content-type: text/html\n\n";