[PATCH 2/5] util: Function to parse boolean term queries
David Bremner
david at tethera.net
Tue Dec 25 06:18:42 PST 2012
Austin Clements <amdragon at MIT.EDU> writes:
> + if (consume_double_quote (&pos)) {
> + char *out = talloc_strdup (ctx, pos);
> + pos = *term_out = out;
> + while (1) {
Overall the control flow here is a bit tricky to follow. I'm not sure if
a real loop condition would help or make it worse.
> + if (! *pos) {
> + /* Premature end of string */
> + goto FAIL;
> + } else if (*pos == '"') {
> + if (*++pos != '"')
> + break;
> + } else if (consume_double_quote (&pos)) {
> + break;
> + }
I'm confused by the asymmetry here. Quoted strings can start with
unicode quotes, but internally can only have ascii '"'? Is this
documented somewhere?
> + } else {
> + while (*pos > ' ' && *pos != ')')
> + ++pos;
> + if (*pos)
> + goto FAIL;
> + }
So if there is no quote, we skip the part after the ':'? I guess I
probably missed something because that doesn't sound like the intended
behaviour.
More information about the notmuch
mailing list