commit - d3d07147e45c1d13f2879130149ab354574e0f32
commit + 270695a375c6af6579a26ccc62cef0be2b98a3e0
blob - c4a737f62a074b753ace5130fde82a16f29cffaf
blob + 1cdf9604017edb0e7c5ffaae40eac7402c2975d6
--- mkindex
+++ mkindex
use strict;
use warnings;
use v5.32;
+use File::Temp qw(tempfile);
use OpenBSD::Pledge;
use OpenBSD::Unveil;
my $pfh; # page file handle
my $page = 0;
my @pages;
+my @files;
my $from_day;
my $to_day;
my $threads_seen = 0;
sub nextfile {
endfile if defined $pfh;
$page += 1;
- my $path = pagename($page);
- # XXX: mkstemp would be better...
- open($pfh, '>', "/tmp/$path")
- or die "can't open $path: $!";
+ my $path;
+ ($pfh, $path) = tempfile "/tmp/gotmarc.index.XXXXXXXXXX";
+ push @files, $path;
say $pfh "<div class='thread'><ul>";
}
for (my $i = 1; $i <= $page; $i++) {
my $name = pagename($i);
- my $path = "/tmp/$name";
+ my $path = shift @files;
my $dest = "$outdir/$name";
open(my $pfh, '>', $dest)
unveil($outdir, "rwc") or die "unveil $outdir: $!";
unveil(".", "r") or die "unveil .: $!";
+
+# can't use tmppath because File::Temp checks wether /tmp exists.
unveil("/tmp", "rwc") or die "unveil /tmp: $!";
-pledge("stdio rpath wpath cpath") or die "pledge: $!";
+# fattr for File::Temp
+pledge("stdio rpath wpath cpath fattr") or die "pledge: $!";
nextfile;