diff options
Diffstat (limited to 'lib/PublicInbox/LeiLcat.pm')
-rw-r--r-- | lib/PublicInbox/LeiLcat.pm | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/lib/PublicInbox/LeiLcat.pm b/lib/PublicInbox/LeiLcat.pm index 8d89cb73..274a9605 100644 --- a/lib/PublicInbox/LeiLcat.pm +++ b/lib/PublicInbox/LeiLcat.pm @@ -122,17 +122,11 @@ could not extract Message-ID from $x @q ? join(' OR ', @q) : $lei->fail("no Message-ID in: @argv"); } -sub _stdin { # PublicInbox::InputPipe::consume callback for --stdin - my ($lei) = @_; # $_[1] = $rbuf - $_[1] // return $lei->fail("error reading stdin: $!"); - return $lei->{mset_opt}->{qstr} .= $_[1] if $_[1] ne ''; - eval { - $lei->fchdir; - my @argv = split(/\s+/, $lei->{mset_opt}->{qstr}); - $lei->{mset_opt}->{qstr} = extract_all($lei, @argv) or return; - $lei->_start_query; - }; - $lei->fail($@) if $@; +sub do_lcat { # lei->do_env cb + my ($lei) = @_; + my @argv = split(/\s+/, delete($lei->{stdin_buf})); + $lei->{mset_opt}->{qstr} = extract_all($lei, @argv) or return; + $lei->_start_query; } sub lei_lcat { @@ -151,9 +145,7 @@ sub lei_lcat { return $lei->fail(<<'') if @argv; no args allowed on command-line with --stdin - require PublicInbox::InputPipe; - PublicInbox::InputPipe::consume($lei->{0}, \&_stdin, $lei); - return; + return $lei->slurp_stdin(\&do_lcat); } $lei->{mset_opt}->{qstr} = extract_all($lei, @argv) or return; $lei->_start_query; |