]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
gcf2: fix autodie usage for older Perl
authorEric Wong <e@80x24.org>
Wed, 15 Nov 2023 04:32:38 +0000 (04:32 +0000)
committerEric Wong <e@80x24.org>
Wed, 15 Nov 2023 08:02:56 +0000 (08:02 +0000)
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.

lib/PublicInbox/Gcf2.pm

index e0219b5559c2607c40b28998ceb91e5709be0286..dcbb201d0b749da34bfcaf7088f28ebe5063af39 100644 (file)
@@ -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;
 }