about summary refs log tree commit homepage
path: root/lib/PublicInbox
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r--lib/PublicInbox/LeiSavedSearch.pm5
-rw-r--r--lib/PublicInbox/LeiUp.pm10
2 files changed, 11 insertions, 4 deletions
diff --git a/lib/PublicInbox/LeiSavedSearch.pm b/lib/PublicInbox/LeiSavedSearch.pm
index b2f1ad10..1d13aef6 100644
--- a/lib/PublicInbox/LeiSavedSearch.pm
+++ b/lib/PublicInbox/LeiSavedSearch.pm
@@ -21,6 +21,7 @@ my %cquote = ("\n" => '\\n', "\t" => '\\t', "\b" => '\\b');
 sub cquote_val ($) { # cf. git-config(1)
         my ($val) = @_;
         $val =~ s/([\n\t\b])/$cquote{$1}/g;
+        $val =~ s/\"/\\\"/g;
         $val;
 }
 
@@ -162,6 +163,10 @@ EOM
                 my $val = $lei->{opt}->{$k} // next;
                 print $fh "\t$k = $val\n";
         }
+        $lei->{opt}->{stdin} and print $fh <<EOM;
+[lei "internal"]
+        rawstr = 1 # stdin was used initially
+EOM
         close($fh) or return $lei->fail("close $f: $!");
         $self->{lock_path} = "$self->{-f}.flock";
         $self->{-ovf} = "$dir/over.sqlite3";
diff --git a/lib/PublicInbox/LeiUp.pm b/lib/PublicInbox/LeiUp.pm
index 66d950b2..d7873a3f 100644
--- a/lib/PublicInbox/LeiUp.pm
+++ b/lib/PublicInbox/LeiUp.pm
@@ -26,13 +26,15 @@ sub up1 ($$) {
         my $lss = PublicInbox::LeiSavedSearch->up($lei, $out) or return;
         my $f = $lss->{'-f'};
         my $mset_opt = $lei->{mset_opt} = { relevance => -2 };
-        my $q = $mset_opt->{q_raw} = $lss->{-cfg}->{'lei.q'} //
+        my $q = $lss->{-cfg}->get_all('lei.q') //
                                 die("lei.q unset in $f (out=$out)\n");
         my $lse = $lei->{lse} // die 'BUG: {lse} missing';
-        if (ref($q)) {
-                $mset_opt->{qstr} = $lse->query_argv_to_string($lse->git, $q);
+        if ($lss->{-cfg}->{'lei.internal.rawstr'}) {
+                scalar(@$q) > 1 and
+                        die "$f: lei.q has multiple values (@$q) (out=$out)\n";
+                $lse->query_approxidate($lse->git, $mset_opt->{qstr} = $q->[0]);
         } else {
-                $lse->query_approxidate($lse->git, $mset_opt->{qstr} = $q);
+                $mset_opt->{qstr} = $lse->query_argv_to_string($lse->git, $q);
         }
         # n.b. only a few CLI args are accepted for "up", so //= usually sets
         for my $k ($lss->ARRAY_FIELDS) {