lib/sexp: allow * as alias for "" in range searches.

It can be tedious to use "" inside of a string, e.g. in a shell script.
This commit is contained in:
David Bremner 2022-06-04 18:53:58 -03:00
parent 7863234586
commit e7ffb74041
2 changed files with 25 additions and 0 deletions

View file

@ -473,6 +473,9 @@ _sexp_parse_range (notmuch_database_t *notmuch, const _sexp_prefix_t *prefix,
}
from = sx->val;
if (strcmp (from, "*") == 0)
from = "";
to = from;
if (sx->next) {
@ -488,6 +491,8 @@ _sexp_parse_range (notmuch_database_t *notmuch, const _sexp_prefix_t *prefix,
}
to = sx->next->val;
if (strcmp (to, "*") == 0)
to = "";
}
if (strcmp (prefix->name, "date") == 0) {

View file

@ -864,6 +864,16 @@ notmuch search date:..2009-11-17 and from:keithp | notmuch_search_sanitize > EXP
notmuch search --query=sexp '(and (date "" 2009-11-17) (from keithp))' | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "date query, lower bound only, using *"
notmuch search date:2009-11-18.. and from:keithp | notmuch_search_sanitize > EXPECTED
notmuch search --query=sexp '(and (date 2009-11-18 *) (from keithp))' | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "date query, upper bound only, using *"
notmuch search date:..2009-11-17 and from:keithp | notmuch_search_sanitize > EXPECTED
notmuch search --query=sexp '(and (date * 2009-11-17) (from keithp))' | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "date query, illegal nesting 1"
notmuch search --query=sexp '(to (date))' > OUTPUT 2>&1
cat <<EOF > EXPECTED
@ -941,6 +951,16 @@ notmuch search lastmod:..$revision2 | notmuch_search_sanitize > EXPECTED
notmuch search --query=sexp "(lastmod \"\" $revision2)" | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "lastmod query, lower bound only, using *"
notmuch search lastmod:$revision.. | notmuch_search_sanitize > EXPECTED
notmuch search --query=sexp "(lastmod $revision *)" | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "lastmod query, upper bound only, using *"
notmuch search lastmod:..$revision2 | notmuch_search_sanitize > EXPECTED
notmuch search --query=sexp "(lastmod * $revision2)" | notmuch_search_sanitize > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "lastmod query, illegal nesting 1"
notmuch search --query=sexp '(to (lastmod))' > OUTPUT 2>&1
cat <<EOF > EXPECTED