]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiInspect.pm
No ext_urls
[public-inbox.git] / lib / PublicInbox / LeiInspect.pm
index 590dfdabca566ef1e37e29a472ba09c9a6bc76d6..d1dca4ef28d43854858fa7d7a7b17ea41c548f31 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # "lei inspect" general purpose inspector for stuff in SQLite and
@@ -12,10 +12,15 @@ use parent qw(PublicInbox::IPC);
 use PublicInbox::Config;
 use PublicInbox::MID qw(mids);
 use PublicInbox::NetReader qw(imap_uri nntp_uri);
+use POSIX qw(strftime);
+use PublicInbox::LeiOverview;
+*iso8601 = \&PublicInbox::LeiOverview::iso8601;
 
 sub _json_prep ($) {
        my ($smsg) = @_;
        $smsg->{$_} += 0 for qw(bytes lines); # integerize
+       $smsg->{dt} = iso8601($smsg->{ds}) if defined($smsg->{ds});
+       $smsg->{rt} = iso8601($smsg->{ts}) if defined($smsg->{ts});
        +{ %$smsg } # unbless and scalarize
 }
 
@@ -143,8 +148,10 @@ sub inspect_num ($$) {
        my $ent = { num => $num };
        if (defined(my $dir = $lei->{opt}->{dir})) {
                $ibx = dir2ibx($lei, $dir) or return;
-               $ent->{xdb} = $ibx->xdb and # for inspect_docid
-                       $docid = PublicInbox::LeiSearch::num2docid($ibx, $num);
+               if (my $srch = $ibx->search) {
+                       $ent->{xdb} = $srch->xdb and
+                               $docid = $srch->num2docid($num);
+               }
        } elsif ($lei->{lse}) {
                $ibx = $lei->{lse};
                $lei->{lse}->xdb; # set {nshard} for num2docid
@@ -228,7 +235,8 @@ sub inspect_argv { # via wq_do
        $lei->{1}->autoflush(0);
        $lei->out('[') if $multi;
        while (defined(my $x = shift @$argv)) {
-               inspect1($lei, $x, scalar(@$argv)) or return;
+               eval { inspect1($lei, $x, scalar(@$argv)) or return };
+               warn "E: $@\n" if $@;
        }
        $lei->out(']') if $multi;
 }
@@ -240,7 +248,7 @@ sub inspect_start ($$) {
        $lei->{wq1} = $self;
        $lei->wait_wq_events($op_c, $ops);
        $self->wq_do('inspect_argv');
-       $self->wq_close(1);
+       $self->wq_close;
 }
 
 sub ins_add { # InputPipe->consume callback
@@ -287,4 +295,10 @@ sub _complete_inspect {
        # TODO: message-ids?, blobs? could get expensive...
 }
 
+sub ipc_atfork_child {
+       my ($self) = @_;
+       $self->{lei}->_lei_atfork_child;
+       $self->SUPER::ipc_atfork_child;
+}
+
 1;