Apple Bug Friday! 73
This bug is ASL_QUERY_OP_REGEX
should be a modifier, not an operator. It was filed on 2008-01-18 at 23:27 PST.
Summary:
ASL_QUERY_OP_REGEX
is an operator unto itself, but should actually be a modifier.
Steps to Reproduce:
- Create a query message using
asl_new
. - Set a property of the message with the value set to a regular expression and the operator set to
ASL_QUERY_OP_NOT_EQUAL | ASL_QUERY_OP_REGEX
. - Pass the message to
asl_search
.
Expected Results:
The response contains messages where the value of the searched-for property does not match the regular expression.
Actual Results:
The response contains messages where the value of the searched-for property matches the regular expression.
Regression:
None. It was the same way on Tiger (except that Tiger’s ASL did not presume ASL_QUERY_OP_SUBSTRING
, as Leopard’s ASL correctly does).
Notes:
The most obvious use case defeated by the current nature of ASL_QUERY_OP_REGEX
is that you cannot search for messages that don’t match the expression.
The manpage lists ASL_QUERY_OP_REGEX
as an operator, which matches reality as of Leopard. However, the header lists it among the modifiers of other operators.
For compatibility, ASL_QUERY_OP_REGEX
alone should remain a valid operator value, equivalent to ASL_QUERY_OP_EQUAL | ASL_QUERY_OP_SUBSTRING | ASL_QUERY_OP_REGEX
. Also, for compatibility with Leopard (if not Tiger), ASL_QUERY_OP_SUBSTRING
should be presumed whenever ASL_QUERY_OP_REGEX
is present, unless either ASL_QUERY_OP_PREFIX
or ASL_QUERY_OP_SUFFIX
(or both) is also present, or the expression says otherwise (^, $, or both).