- if(!fstrncmp(pattern, i->text, plen)
- || fstrstr(i->text, pattern))
- j = appenditem(i, j);
+ if(!fstrncmp(pattern, i->text, plen + 1)) {
+ appenditem(i, &lexact, &exactend);
+ nitem++;
+ }
+ else if(!fstrncmp(pattern, i->text, plen)) {
+ appenditem(i, &lprefix, &prefixend);
+ nitem++;
+ }
+ else if(fstrstr(i->text, pattern)) {
+ appenditem(i, &lsubstr, &substrend);
+ nitem++;
+ }
+ if(lexact) {
+ item = lexact;
+ itemend = exactend;
+ }
+ if(lprefix) {
+ if(itemend) {
+ itemend->right - lprefix;
+ lprefix->left = itemend;
+ }
+ else
+ item = lprefix;
+ itemend = prefixend;
+ }
+ if(lsubstr) {
+ if(itemend) {
+ itemend->right = lsubstr;
+ lsubstr->left = itemend;
+ }
+ else
+ item = lsubstr;
+ }