]> Sergey Matveev's repositories - public-inbox.git/commitdiff
check defined return value for localized slurp errors
authorEric Wong <e@80x24.org>
Sun, 27 Dec 2020 02:53:05 +0000 (02:53 +0000)
committerEric Wong <e@80x24.org>
Mon, 28 Dec 2020 23:19:48 +0000 (23:19 +0000)
Reading from regular files (even on STDIN) can fail
when dealing with flakey storage.

lib/PublicInbox/Gcf2.pm
lib/PublicInbox/Inbox.pm
script/public-inbox-edit
script/public-inbox-init
script/public-inbox-learn
script/public-inbox-purge

index 041dffe7d9c7b26396ab0a97f7b7deaf008c6896..fe6afef26e5959dd08f43cdef5e25466a56af539 100644 (file)
@@ -35,7 +35,7 @@ BEGIN {
                if (open(my $fh, '<', $f)) {
                        chomp($l, $c);
                        local $/;
-                       $c_src = <$fh>;
+                       defined($c_src = <$fh>) or die "read $f: $!\n";
                        $CFG{LIBS} = $l;
                        $CFG{CCFLAGSEX} = $c;
                        last;
index 1b9b56ff1a7220e12350b726520bfcf91efa59e2..af6380a758b187127b7240bb6f422e75dca283b5 100644 (file)
@@ -210,12 +210,9 @@ sub over {
 
 sub try_cat {
        my ($path) = @_;
-       my $rv = '';
-       if (open(my $fh, '<', $path)) {
-               local $/;
-               $rv = <$fh>;
-       }
-       $rv;
+       open(my $fh, '<', $path) or return '';
+       local $/;
+       <$fh> // '';
 }
 
 sub cat_desc ($) {
index a70614fc2a4074e1c35485a2a290ddefe7ab0249..81f023bca1873e87491dddcfc141a006beb9e309 100755 (executable)
@@ -183,7 +183,8 @@ retry_edit:
        # rename/relink $edit_fn
        open my $new_fh, '<', $edit_fn or
                die "can't read edited file ($edit_fn): $!\n";
-       my $new_raw = do { local $/; <$new_fh> };
+       defined(my $new_raw = do { local $/; <$new_fh> }) or die
+               "read $edit_fn: $!\n";
 
        if (!$opt->{raw}) {
                # get rid of the From we added
index 6d538e430605a36fbac0d27dcb489078b13fa919..7ac7783007a15d4cf98e51a545db503829909d0a 100755 (executable)
@@ -100,11 +100,7 @@ if (-e $pi_config) {
        defined $perm or die "(f)stat failed on $pi_config: $!\n";
        chmod($perm & 07777, $fh) or
                die "(f)chmod failed on future $pi_config: $!\n";
-       my $old;
-       {
-               local $/;
-               $old = <$oh>;
-       }
+       defined(my $old = do { local $/; <$oh> }) or die "read $pi_config: $!\n";
        print $fh $old or die "failed to write: $!\n";
        close $oh or die "failed to close $pi_config: $!\n";
 
index 9352c8ff7dd41088796eb60607452cea3b98cc0d..1731a4ba4037c0ee889c09b8a1424378c0f5cdff 100755 (executable)
@@ -39,8 +39,7 @@ my $spamc = PublicInbox::Spamcheck::Spamc->new;
 my $pi_cfg = PublicInbox::Config->new;
 my $err;
 my $mime = PublicInbox::Eml->new(do{
-       local $/;
-       my $data = <STDIN>;
+       defined(my $data = do { local $/; <STDIN> }) or die "read STDIN: $!\n";
        $data =~ s/\A[\r\n]*From [^\r\n]*\r?\n//s;
 
        if ($train ne 'rm') {
index 7bca11eafc6fc81f1566a6c8fc6b37e27817e6fb..52f1f18a61cb210f283a30495577b7736870337c 100755 (executable)
@@ -32,7 +32,7 @@ if ($opt->{help}) { print $help; exit 0 };
 my @ibxs = PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt);
 PublicInbox::AdminEdit::check_editable(\@ibxs);
 
-my $data = do { local $/; <STDIN> };
+defined(my $data = do { local $/; <STDIN> }) or die "read STDIN: $!\n";
 $data =~ s/\A[\r\n]*From [^\r\n]*\r?\n//s;
 my $n_purged = 0;