my ($fh, $filename) = tempfile('pi-init-XXXXXXXX', DIR => $dir);
if (-e $pi_config) {
open(my $oh, '<', $pi_config) or die "unable to read $pi_config: $!\n";
+ my @st = stat($oh);
+ my $perm = $st[2];
+ defined $perm or die "(f)stat failed on $pi_config: $!\n";
+ chmod($perm & 07777, $fh) or
+ die "(f)chmod failed on future $pi_config: $!\n";
my $old;
{
local $/;
my $cfgfile = "$ENV{PI_DIR}/config";
my @cmd = (pi_init, 'blist', "$tmpdir/blist",
qw(http://example.com/blist blist@example.com));
- is(system(@cmd), 0, 'public-inbox-init failed');
+ is(system(@cmd), 0, 'public-inbox-init OK');
ok(-e $cfgfile, "config exists, now");
- is(system(@cmd), 0, 'public-inbox-init failed (idempotent)');
+ is(system(@cmd), 0, 'public-inbox-init OK (idempotent)');
+
+ chmod 0666, $cfgfile or die "chmod failed: $!";
+ @cmd = (pi_init, 'clist', "$tmpdir/clist",
+ qw(http://example.com/clist clist@example.com));
+ is(system(@cmd), 0, 'public-inbox-init clist OK');
+ is((stat($cfgfile))[2] & 07777, 0666, "permissions preserved");
}
done_testing();