- if (i)
- wrbuf_puts(w_ccl, " or ");
- wrbuf_puts(w_ccl, ccl);
- wrbuf_puts(w_ccl, "=\"");
- wrbuf_puts(w_ccl, values[i]);
- wrbuf_puts(w_ccl, "\"");
+ int cerror, cpos;
+ struct ccl_rpn_node *cn;
+
+ wrbuf_rewind(ccl_w);
+ wrbuf_puts(ccl_w, ccl);
+ wrbuf_puts(ccl_w, "=\"");
+ wrbuf_puts(ccl_w, values[i]);
+ wrbuf_puts(ccl_w, "\"");
+
+ cn = ccl_find_str(ccl_map, wrbuf_cstr(ccl_w),
+ &cerror, &cpos);
+ if (cn)
+ {
+ if (i == 0)
+ wrbuf_printf(w_pqf, "@and ");
+
+ /* or multiple values.. could be bad if last CCL
+ parse fails, but this is unlikely to happen */
+ if (i < num - 1)
+ wrbuf_printf(w_pqf, "@or ");
+ ccl_pquery(w_pqf, cn);
+ ccl_rpn_delete(cn);
+ }