]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei: rely on localized $current_lei for warnings
authorEric Wong <e@80x24.org>
Thu, 14 Jan 2021 07:06:19 +0000 (19:06 -1200)
committerEric Wong <e@80x24.org>
Thu, 14 Jan 2021 23:14:08 +0000 (23:14 +0000)
This lets us get rid of the Sys::Syslog import and __WARN__
override in LeiXSearch, though we still need it with
->atfork_child_wq.

lib/PublicInbox/LEI.pm
lib/PublicInbox/LeiXSearch.pm

index fd2b722c7bf4c3a3ac4e4b2e6f03d1072be5747a..a8fea16d3aa47077b3f761a37705acf081582c81 100644 (file)
@@ -26,6 +26,7 @@ use Text::Wrap qw(wrap);
 use File::Path qw(mkpath);
 use File::Spec;
 our $quit = \&CORE::exit;
+our $current_lei;
 my ($recv_cmd, $send_cmd);
 my $GLP = Getopt::Long::Parser->new;
 $GLP->configure(qw(gnu_getopt no_ignore_case auto_abbrev));
@@ -447,7 +448,7 @@ sub optparse ($$$) {
 
 sub dispatch {
        my ($self, $cmd, @argv) = @_;
-       local $SIG{__WARN__} = sub { err($self, @_) };
+       local $current_lei = $self; # for __WARN__
        return _help($self, 'no command given') unless defined($cmd);
        my $func = "lei_$cmd";
        $func =~ tr/-/_/;
@@ -849,7 +850,9 @@ sub lazy_start {
        # STDOUT will cause the calling `lei' client process to finish
        # reading the <$daemon> pipe.
        openlog($path, 'pid', 'user');
-       local $SIG{__WARN__} = sub { syslog('warning', "@_") };
+       local $SIG{__WARN__} = sub {
+               $current_lei ? err($current_lei, @_) : syslog('warning', "@_");
+       };
        my $on_destroy = PublicInbox::OnDestroy->new($$, sub {
                syslog('crit', "$@") if $@;
        });
index d06b6f1d63ad4a7480a6324949278722fe606ed8..68889e813d89319424ea9907d4b115da8a157652 100644 (file)
@@ -8,7 +8,6 @@ package PublicInbox::LeiXSearch;
 use strict;
 use v5.10.1;
 use parent qw(PublicInbox::LeiSearch PublicInbox::IPC);
-use Sys::Syslog qw(syslog);
 
 sub new {
        my ($class) = @_;
@@ -187,12 +186,6 @@ sub do_query {
        }
 }
 
-sub ipc_atfork_child {
-       my ($self) = @_;
-       $SIG{__WARN__} = sub { syslog('warning', "@_") };
-       $self->SUPER::ipc_atfork_child; # PublicInbox::IPC
-}
-
 sub ipc_atfork_prepare {
        my ($self) = @_;
        $self->wq_set_recv_modes(qw[+<&= >&= >&= +<&=]);