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
