From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.1 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id CEC552018E for ; Mon, 28 Nov 2022 05:32:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1669613560; bh=BOAQYiZq7f/lBJT7iQvc7s5QL8MgiVoQmc0bKXx/M2o=; h=From:To:Subject:Date:In-Reply-To:References:From; b=nL58Shg1HrLOZxQ0AhsNl1oh/7koNtLFWpwXb0G4sCbPqClGAt2qESfZZU7nwyrTR w6MZTZR6yd0Og6QX1ajO02KpjmJ8Q1hvggE6WnWzrbeApm4agacdo4EfeXPU8czzot T3z5J43TgbbQ83azCZEq34ryZQHqTWsBOgB4gzhM= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 39/95] lei_mirror: cleanup File::Temp OO usage Date: Mon, 28 Nov 2022 05:31:36 +0000 Message-Id: <20221128053232.291618-40-e@80x24.org> In-Reply-To: <20221128053232.291618-1-e@80x24.org> References: <20221128053232.291618-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: There's no need to capture or rely on the File::Temp->filename in most cases since most Perl functions accept file handles all the same. --- lib/PublicInbox/LeiMirror.pm | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index acf08665..3bc19d2f 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -113,12 +113,11 @@ sub clone_cmd { sub ft_rename ($$$) { my ($ft, $dst, $open_mode) = @_; - my $fn = $ft->filename; my @st = stat($dst); my $mode = @st ? ($st[2] & 07777) : ($open_mode & ~umask); - chmod($mode, $ft) or croak "E: chmod $fn: $!"; + chmod($mode, $ft) or croak "E: chmod($ft): $!"; require File::Copy; - File::Copy::mv($fn, $dst) or croak "E: mv($fn => $ft): $!"; + File::Copy::mv($ft->filename, $dst) or croak "E: mv($ft => $dst): $!"; $ft->unlink_on_destroy(0); } @@ -606,15 +605,14 @@ sub try_manifest { $uri->path($path . '/manifest.js.gz'); my $ft = File::Temp->new(TEMPLATE => '.manifest-XXXX', UNLINK => 1, TMPDIR => 1, SUFFIX => '.tmp'); - my $fn = $ft->filename; - my $cmd = $curl->for_uri($lei, $uri, qw(-f -R -o), $fn); + my $cmd = $curl->for_uri($lei, $uri, qw(-f -R -o), $ft->filename); my %opt = map { $_ => $lei->{$_} } (0..2); my $cerr = run_reap($lei, $cmd, \%opt); if ($cerr) { return try_scrape($self) if ($cerr >> 8) == 22; # 404 missing return $lei->child_error($cerr, "@$cmd failed"); } - my $m = eval { decode_manifest($ft, $fn, $uri) }; + my $m = eval { decode_manifest($ft, $ft, $uri) }; if ($@) { warn $@; return try_scrape($self); @@ -681,9 +679,12 @@ EOM # users won't have to delete manifest if they +w an # epoch they no longer want to skip my $json = PublicInbox::Config->json->encode($m); - my $mtime = (stat($fn))[9]; - gzip(\$json => $fn) or die "gzip: $GzipError"; - utime($mtime, $mtime, $fn) or die "utime(..., $fn): $!"; + my $mtime = (stat($ft))[9]; + seek($ft, SEEK_SET, 0) or die "seek($ft): $!"; + truncate($ft, 0) or die "truncate($ft): $!"; + gzip(\$json => $ft) or die "gzip($ft): $GzipError"; + $ft->flush or die "flush($ft): $!"; + utime($mtime, $mtime, "$ft") or die "utime(..., $ft): $!"; } ft_rename($ft, "$self->{dst}/manifest.js.gz", 0666); open my $x, '>', "$self->{dst}/mirror.done"; # for _wq_done_wait