]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LEI.pm
lei: fix git-credential handling
[public-inbox.git] / lib / PublicInbox / LEI.pm
index 8a07a4c8fda50f1a71b363d0b49ff8625f073606..f9361c68240fac3f331ea01fa130b6603eefb249 100644 (file)
@@ -160,8 +160,8 @@ our %CMD = ( # sorted in order of importance/use:
 'plonk' => [ '--threads|--from=IDENT',
        'exclude mail matching From: or threads from non-Message-ID searches',
        qw(stdin| threads|t from|f=s mid=s oid=s), @c_opt ],
-'mark' => [ 'KEYWORDS...',
-       'set/unset keywords on message(s)',
+'tag' => [ 'KEYWORDS...',
+       'set/unset keywords and/or labels on message(s)',
        qw(stdin| in-format|F=s input|i=s@ oid=s@ mid=s@), @c_opt,
        pass_through('-kw:foo for delete') ],
 'forget' => [ '[--stdin|--oid=OID|--by-mid=MID]',
@@ -348,7 +348,7 @@ my %CONFIG_KEYS = (
        'leistore.dir' => 'top-level storage location',
 );
 
-my @WQ_KEYS = qw(lxs l2m imp mrr cnv p2q mark sol); # internal workers
+my @WQ_KEYS = qw(lxs l2m imp mrr cnv p2q tag sol); # internal workers
 
 # pronounced "exit": x_it(1 << 8) => exit(1); x_it(13) => SIGPIPE
 sub x_it ($$) {
@@ -839,7 +839,13 @@ sub start_mua {
        if (my $sock = $self->{sock}) { # lei(1) client process runs it
                send($sock, exec_buf(\@cmd, {}), MSG_EOR);
        } elsif ($self->{oneshot}) {
-               $self->{"pid.$self.$$"}->{spawn(\@cmd)} = \@cmd;
+               my $pid = fork // die "fork: $!";
+               if ($pid > 0) { # original process
+                       exec(@cmd);
+                       warn "exec @cmd: $!\n";
+                       POSIX::_exit(1);
+               }
+               POSIX::setsid() > 0 or die "setsid: $!";
        }
        if ($self->{lxs} && $self->{au_done}) { # kick wait_startq
                syswrite($self->{au_done}, 'q' x ($self->{lxs}->{jobs} // 0));