From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id E29471F461 for ; Wed, 15 Nov 2023 04:32:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1700022759; bh=ABF7lRgzs5aJbQiAcMWYGd4s+ppSaUw12/dcFHQE3ao=; h=From:To:Subject:Date:In-Reply-To:References:From; b=dE39os/Xqlzky84D95LMov08Az2ADWF4cCSzA0GJebXivp7i9/+aMJDqwtvbTIOfp H7oYlxN0ffvVq1wC2GF61NYdrxg7g7eBIThenq36FEZ8QdN87iKgFPp7x8VTSFHTQc jVN38Qk3aOWhE3TOyWsqZL9qY7DyJt37xn/TivI4= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 2/3] gcf2: fix autodie usage for older Perl Date: Wed, 15 Nov 2023 04:32:38 +0000 Message-Id: <20231115043239.1069219-3-e@80x24.org> In-Reply-To: <20231115043239.1069219-1-e@80x24.org> References: <20231115043239.1069219-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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 | 13 ++++++------- 1 file 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; }