X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fsearch.c;h=633e07ee7fd15b7e03e8c9efd63513e5042180c8;hb=HEAD;hp=d2d9969c50a8905518fc9f31a53e1c1f0daabb29;hpb=9c161e776f0aa97d4cea5af7a0de070a6cc428d7;p=doldaconnect.git diff --git a/daemon/search.c b/daemon/search.c index d2d9969..633e07e 100644 --- a/daemon/search.c +++ b/daemon/search.c @@ -139,6 +139,19 @@ static struct wcslist *newsl(struct wcslist **list, wchar_t *str) return(ln); } +static int wcsexists(wchar_t *h, wchar_t *n) +{ + size_t hl = wcslen(h), nl = wcslen(n); + wchar_t lh[hl + 1], ln[nl + 1]; + int i; + + for(i = 0; i <= hl; i++) + lh[i] = towlower(h[i]); + for(i = 0; i <= nl; i++) + ln[i] = towlower(n[i]); + return(wcsstr(lh, ln) != NULL); +} + static void slmerge1(struct wcslist **list, wchar_t *str) { size_t len; @@ -651,7 +664,7 @@ struct sexpr *parsesexpr(int argc, wchar_t **argv) sexpr->op = SOP_SIZEEQ; else sexpr->op = SOP_SIZEGT; - sexpr->d.n = wcstol(tok2->d.str + 2, NULL, 0); + sexpr->d.sz = wcstoll(tok2->d.str + 2, NULL, 0); sexpr->cost = 0; getsexpr(tok->d.se = sexpr); freetok(tok2); @@ -1097,11 +1110,11 @@ static int srisvalid(struct srchres *sr, struct sexpr *sexpr) p = fnfilebasename(sr->filename); return(wcsexists(p, sexpr->d.s)); case SOP_SIZELT: - return(sr->size < sexpr->d.n); + return(sr->size < sexpr->d.sz); case SOP_SIZEEQ: - return(sr->size == sexpr->d.n); + return(sr->size == sexpr->d.sz); case SOP_SIZEGT: - return(sr->size > sexpr->d.n); + return(sr->size > sexpr->d.sz); case SOP_HASHIS: if(sr->hash == NULL) return(0);