Hi Eric,

Thanks for the help.

On Sun, Oct 30, 2022 at 05:13:33AM +0000, Eric Wong wrote:
> Hangbin Liu <[email protected]> wrote:
> > Hi,
> > 
> > I used to use a search like
> > 
> > lei q -I https://lore.kernel.org/all/ -o ~/Mail/liuhangbin --threads 
> > --dedupe=mid '((tc:liuhangbin AND rt:6.month.ago..) NOT 
> > (tc:[email protected] OR f:[email protected])'
> > 
> > It works on fc35. But after I update to fc36 with lei-1.9.0-1.fc36. It 
> > start to
> > add quotes in the search link and make the search never works. e.g.
> 
> Are you able to show the curl CLI from fc35?
> Which public-inbox/lei version was it?
> 
> I'm actually curious fc35 worked at all, since the quoting would've
> been broken, I think...

Sorry, I don't have the fc35 environment now.

> 
> > $ lei q -I https://lore.kernel.org/all/ -o ~/Mail/liuhangbin --threads 
> > --dedupe=mid '((tc:liuhangbin AND rt:6.month.ago..) NOT 
> > (tc:[email protected] OR f:[email protected])'
> > # /home/Liu/.local/share/lei/store 0/0
> > # /usr/bin/curl -Sf -s -d '' 
> > https://lore.kernel.org/all/?x=m&t=1&q=((tc%3A%22liuhangbin+AND+rt%3A6.month.ago..)+NOT+(tc%3Astable%40vger.kernel.org+OR+f%3Asfr%40canb.auug.org.au)%22
> > # 0 written to /home/Liu/Mail/liuhangbin/ (0 matches)
> > 
> > Do you think if this is a bug, or I should update my search.
> 
> The %22 in fc36 is because your entire query is treated as one
> element in argv and matches expected behavior.
> 
> Since '(' and ')' in the shell CLI is special, I suggest either:

I'm curious about why the quote(%22) is added after "tc", not after "("

> 
> a) using --stdin to enter queries containing '(' and ')'
> 
> b) quoting (or escaping) only the '(' and ')':
> 
>     '('tc:liuhangbin AND rt:6.month.ago..')' NOT ...
> 
>                 or
> 
>     \(tc:liuhangbin AND rt:6.month.ago..\) NOT ...

with this way, the cmd line works. And in config file, it would looks like

[lei]
        q = ((tc:liuhangbin
        q = AND
        q = rt:6.month.ago..)
        q = NOT
        q = (tc:[email protected]
        q = OR
        q = f:[email protected])

But if I have a long search line. This will breaks too much and hard to edit.
e.g. My real previous search is like

[lei]
        q = (tc:liuhangbin OR \
             (dfn:drivers/net/wireguard/ AND rt:6.month.ago..) OR \
             (dfn:tools/testing/selftests/net/ AND rt:1.month.ago..) OR \
             (dfn:drivers/net/team/ AND rt:6.month.ago..) OR \
             (dfn:net/ipv4/igmp.c AND rt:6.month.ago..) OR \
             (dfn:net/ipv6/mcast.c AND rt:6.month.ago..)) \
             NOT (tc:[email protected] OR f:[email protected])

If I add "\" on each "(", this will break to a very long config search.
I tried to adjust it to

[lei]
        q = (tc:liuhangbin OR \
             (dfn:drivers/net/wireguard/ AND rt:6.month.ago..) OR \
             (dfn:tools/testing/selftests/net/ AND rt:1.month.ago..) OR \
             (dfn:drivers/net/team/ AND rt:6.month.ago..) OR \
             (dfn:net/ipv4/igmp.c AND rt:6.month.ago..) OR \
             (dfn:net/ipv6/mcast.c AND rt:6.month.ago..))
        q = NOT
        q = (tc:[email protected]
        q = OR
        q = f:[email protected])

And now it works...

$ lei up /home/Liu/Mail/gmail/Linux_Kernel
# https://lore.kernel.org/all/ limiting to 2022-09-30 17:00 +0800 and newer
60927 lei_xsearch 0 wq_worker: query_one_mset: Exception: Unknown range 
operation at /usr/share/perl5/vendor_perl/PublicInbox/IPC.pm line 254.
# /usr/bin/curl -Sf -s -d '' 
https://lore.kernel.org/all/?x=m&t=1&q=((tc%3Aliuhangbin+OR+(dfn%3Adrivers%2Fnet%2Fwireguard%2F+AND+rt%3A6.month.ago..)+OR+(dfn%3Atools%2Ftesting%2Fselftests%2Fnet%2F+AND+rt%3A1.month.ago..)+OR+(dfn%3Adrivers%2Fnet%2Fteam%2F+AND+rt%3A6.month.ago..)+OR+(dfn%3Anet%2Fipv4%2Figmp.c+AND+rt%3A6.month.ago..)+OR+(dfn%3Anet%2Fipv6%2Fmcast.c+AND+rt%3A1651301673..))+NOT+(tc%3Astable%40vger.kernel.org+OR+f%3Asfr%40canb.auug.org.au))+AND+dt%3A20220930090001..
# https://lore.kernel.org/all/ 43/?

So I want to know when/why *lei* add the quotes.

Thanks
Hangbin

Reply via email to