X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fsearch.c;h=b70e7ae521d251001c1f697a81562a0536cdab3a;hb=2f4cd43c4483070e81c0862582a80b59a208f0dd;hp=1aec9c0be48c26f4c1a9855ff0f498b944b157ec;hpb=b5010caaa4606ea37df9cd1334dc99fff05a8bd3;p=doldaconnect.git diff --git a/daemon/search.c b/daemon/search.c index 1aec9c0..b70e7ae 100644 --- a/daemon/search.c +++ b/daemon/search.c @@ -1,6 +1,6 @@ /* * Dolda Connect - Modular multiuser Direct Connect-style client - * Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com) + * Copyright (C) 2004 Fredrik Tolf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -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; @@ -1085,9 +1098,7 @@ static int srisvalid(struct srchres *sr, struct sexpr *sexpr) free(buf); return(!ret); case SOP_LINKRE: - p = sr->filename; - if(sr->fnet->filebasename != NULL) - p = sr->fnet->filebasename(p); + p = fnfilebasename(sr->filename); if((buf = icwcstombs(p, "UTF-8")) == NULL) return(0); ret = regexec(&sexpr->d.re.cre, buf, 0, NULL, 0); @@ -1096,9 +1107,7 @@ static int srisvalid(struct srchres *sr, struct sexpr *sexpr) case SOP_NAMESS: return(wcsexists(sr->filename, sexpr->d.s)); case SOP_LINKSS: - p = sr->filename; - if(sr->fnet->filebasename != NULL) - p = sr->fnet->filebasename(p); + p = fnfilebasename(sr->filename); return(wcsexists(p, sexpr->d.s)); case SOP_SIZELT: return(sr->size < sexpr->d.n);