if (lookahead->name[i] == ' ')
no_spaces++;
len += 1+lookahead->len+lookahead->ws_prefix_len;
- left_trunc = lookahead->left_trunc;
- right_trunc = lookahead->right_trunc;
lookahead = lookahead->next;
}
{
const char *src_str = cclp->look_token->name;
size_t src_len = cclp->look_token->len;
-
+
+ if (i == 0 && src_len > 0 && *src_str == '?')
+ {
+ src_len--;
+ src_str++;
+ left_trunc = 1;
+ }
+ if (i == no - 1 && src_len > 0 && src_str[src_len-1] == '?')
+ {
+ src_len--;
+ right_trunc = 1;
+ }
if (p->u.t.term[0] && cclp->look_token->ws_prefix_len)
{
size_t len = strlen(p->u.t.term);
struct ccl_token *prev;
const char *ws_prefix_buf; /* leading white space buf */
size_t ws_prefix_len; /* leading white space len */
- int left_trunc; /* left truncated */
- int right_trunc; /* right truncated */
};
/** CCL parser structure */
last->next->prev = last;
last = last->next;
}
- last->left_trunc = last->right_trunc = 0;
last->ws_prefix_buf = (const char *) cp0;
last->ws_prefix_len = cp - cp0;
last->next = NULL;
default:
--cp;
--last->len;
- if (*cp == '?')
- {
- last->left_trunc = 1;
- cp++;
- }
if (*cp == '"')
{
cp++;
{
last->kind = CCL_TOK_TERM;
last->name = (const char *) cp;
- while (*cp && !strchr("(),%!><=? \t\n\r", *cp))
+ while (*cp && !strchr("(),%!><= \t\n\r", *cp))
{
++ last->len;
cp++;
if (token_cmp(cclp, aliases, last))
last->kind = CCL_TOK_SET;
}
- if (*cp == '?')
- {
- last->right_trunc = 1;
- cp++;
- }
}
}
return first;
n->next->prev = n;
n->kind = CCL_TOK_TERM;
- n->left_trunc = n->right_trunc = 0;
n->name = 0;
n->len = 0;
n->ws_prefix_buf = 0;