]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiToMail.pm
config: lazy-load coderepos, support extindex
[public-inbox.git] / lib / PublicInbox / LeiToMail.pm
index 1e2060fe973d129f0ddffec6db17f1fac68e4ce5..27e1338f7f1bb57305dc43b67cc1fde5ede59b8b 100644 (file)
@@ -170,9 +170,9 @@ sub reap_compress { # dwaitpid callback
 # { foo => '' } means "--foo" is passed to the command-line,
 # otherwise { foo => '--bar' } passes "--bar"
 our %zsfx2cmd = (
-       gz => [ qw(GZIP pigz gzip), { rsyncable => '', threads => '-p' } ],
+       gz => [ qw(GZIP pigz gzip), { rsyncable => '' } ],
        bz2 => [ 'bzip2', {} ],
-       xz => [ 'xz', { threads => '-T' } ],
+       xz => [ 'xz', {} ],
        # XXX does anybody care for these?  I prefer zstd on entire FSes,
        # so it's probably not necessary on a per-file basis
        # zst => [ 'zstd', { -default => [ qw(-q) ], # it's noisy by default
@@ -203,7 +203,7 @@ sub zsfx2cmd ($$$) {
                my $switch = $cmd_opt->{rsyncable} // next;
                push @cmd, '--'.($switch || $bool);
        }
-       for my $key (qw(threads)) { # support compression level?
+       for my $key (qw(rsyncable)) { # support compression level?
                my $switch = $cmd_opt->{$key} // next;
                my $val = $lei->{opt}->{$key} // next;
                push @cmd, $switch, $val;
@@ -223,8 +223,6 @@ sub _post_augment_mbox { # open a compressor process
        $dup->{$_} = $lei->{$_} for qw(2 sock);
        tie *$pp, 'PublicInbox::ProcessPipe', $pid, $w, \&reap_compress, $dup;
        $lei->{1} = $pp;
-       die 'BUG: unexpected {ovv}->{lock_path}' if $lei->{ovv}->{lock_path};
-       $lei->{ovv}->ovv_out_lk_init;
 }
 
 sub decompress_src ($$$) {
@@ -248,8 +246,8 @@ sub _augment { # MboxReader eml_cb
 
 sub _mbox_augment_kw_maybe {
        my ($eml, $lei, $lse, $augment) = @_;
-       my @kw = PublicInbox::LeiStore::mbox_keywords($eml);
-       update_kw_maybe($lei, $lse, $eml, \@kw);
+       my $kw = PublicInbox::MboxReader::mbox_keywords($eml);
+       update_kw_maybe($lei, $lse, $eml, $kw);
        _augment($eml, $lei) if $augment;
 }
 
@@ -281,7 +279,7 @@ sub update_kw_maybe ($$$$) {
        if ($x) {
                $lei->{sto}->ipc_do('set_eml', $eml, @$kw);
        } elsif (!defined($x)) {
-               # TODO: xkw
+               $lei->{sto}->ipc_do('set_xkw', $eml, $kw);
        }
 }
 
@@ -495,6 +493,7 @@ sub _pre_augment_mbox {
        my $out = $lei->{1};
        if ($dst ne '/dev/stdout') {
                if (-p $dst) {
+                       $out = undef;
                        open $out, '>', $dst or die "open($dst): $!";
                } elsif (-f _ || !-e _) {
                        require PublicInbox::MboxLock;
@@ -521,6 +520,11 @@ sub _pre_augment_mbox {
        if (($self->{zsfx}) = ($dst =~ /\.($zsfx_allow)\z/)) {
                pipe(my ($r, $w)) or die "pipe: $!";
                $lei->{zpipe} = [ $r, $w ];
+               $lei->{ovv}->{lock_path} and
+                       die 'BUG: unexpected {ovv}->{lock_path}';
+               $lei->{ovv}->ovv_out_lk_init;
+       } elsif (!$self->{seekable} && !$lei->{ovv}->{lock_path}) {
+               $lei->{ovv}->ovv_out_lk_init;
        }
        $lei->{1} = $out;
        undef;