about summary refs log tree commit homepage
path: root/lib/PublicInbox
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2023-11-15 04:32:38 +0000
committerEric Wong <e@80x24.org>2023-11-15 08:02:56 +0000
commit7d06b126e9395d96a03b37daf49019925ff0ec76 (patch)
tree3d62c9e6249022b5e5a3077898224c35454d5c9d /lib/PublicInbox
parente618c7654794d58b299cc4928065c6a036f9d869 (diff)
downloadpublic-inbox-7d06b126e9395d96a03b37daf49019925ff0ec76.tar.gz
At least on Perl v5.16.3 on CentOS 7.x, use-ing autodie within
BEGIN {} affects all subroutines in that package, too.  So just
use autodie at the top-level and rely on CORE::* and try_cat
to handle cases where autodie isn't desired.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r--lib/PublicInbox/Gcf2.pm13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/PublicInbox/Gcf2.pm b/lib/PublicInbox/Gcf2.pm
index e0219b55..dcbb201d 100644
--- a/lib/PublicInbox/Gcf2.pm
+++ b/lib/PublicInbox/Gcf2.pm
@@ -11,10 +11,9 @@ use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
 use IO::Handle; # autoflush
 use PublicInbox::Git;
 use PublicInbox::Lock;
-use autodie qw(close);
+use autodie qw(close open seek truncate);
 
 BEGIN {
-        use autodie;
         my (%CFG, $c_src);
         # PublicInbox::Spawn will set PERL_INLINE_DIRECTORY
         # to ~/.cache/public-inbox/inline-c if it exists and Inline::C works
@@ -80,9 +79,8 @@ sub add_alt ($$) {
         # to refer to $V2INBOX_DIR/git/$EPOCH.git/objects
         #
         # See https://bugs.debian.org/975607
-        if (open(my $fh, '<', "$objdir/info/alternates")) {
-                chomp(my @abs_alt = grep m!^/!, PublicInbox::IO::read_all $fh);
-                $gcf2->add_alternate($_) for @abs_alt;
+        if (my $s = PublicInbox::IO::try_cat("$objdir/info/alternates")) {
+                $gcf2->add_alternate($_) for ($s =~ m!^(/[^\n]+)\n!gms);
         }
         $gcf2->add_alternate($objdir);
         1;
@@ -92,8 +90,9 @@ sub have_unlinked_files () {
         # FIXME: port gcf2-like over to git.git so we won't need to
         # deal with libgit2
         return 1 if $^O ne 'linux';
-        open my $fh, '<', "/proc/$$/maps" or return;
-        while (<$fh>) { return 1 if /\.(?:idx|pack) \(deleted\)$/ }
+        if (my $s = PublicInbox::IO::try_cat("/proc/$$/maps")) {
+                return 1 if /\.(?:idx|pack) \(deleted\)/s;
+        }
         undef;
 }