From 8bdbfebe9d82bb4e941e59e39e98f3d295bca5ca Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Sat, 8 Mar 2008 15:31:42 +0100 Subject: [PATCH] Removed wcsexists from libcommon. --- common/utils.c | 32 +++++--------------------------- daemon/fnet-dc.c | 10 +++++++--- daemon/search.c | 13 +++++++++++++ include/utils.h | 2 +- 4 files changed, 26 insertions(+), 31 deletions(-) diff --git a/common/utils.c b/common/utils.c index cd2a80a..5db9c58 100644 --- a/common/utils.c +++ b/common/utils.c @@ -29,7 +29,6 @@ #include #include #include -#include #ifdef HAVE_CONFIG_H #include @@ -418,34 +417,13 @@ double ntime(void) return((double)tv.tv_sec + ((double)tv.tv_usec / 1000000.0)); } -int wcsexists(wchar_t *h, wchar_t *n) +wchar_t *wcslower(wchar_t *wcs) { - int i, o, nl, hl; - wchar_t *ln, *lh; + wchar_t *p; - ln = alloca(sizeof(*ln) * (nl = wcslen(n))); - for(i = 0; i < nl; i++) - ln[i] = towlower(n[i]); - lh = alloca(sizeof(*lh) * (hl = wcslen(h))); - if(nl > hl) - return(0); - for(i = 0; i < nl; i++) - lh[i] = towlower(h[i]); - i = 0; - while(1) - { - for(o = 0; o < nl; o++) - { - if(lh[i + o] != ln[o]) - break; - } - if(o == nl) - return(1); - if(i == hl - nl) - return(0); - lh[i + nl] = towlower(h[i + nl]); - i++; - } + for(p = wcs; *p != L'\0'; p++) + *p = towlower(*p); + return(wcs); } #ifndef HAVE_WCSCASECMP diff --git a/daemon/fnet-dc.c b/daemon/fnet-dc.c index b79e84d..c7d916d 100644 --- a/daemon/fnet-dc.c +++ b/daemon/fnet-dc.c @@ -1123,7 +1123,7 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char * size_t buflen; int termnum, satisfied, skipcheck; int level, tersat[32]; - wchar_t *terms[32]; + wchar_t *terms[32], *lname; char hashtth[24]; hub = fn->data; @@ -1211,8 +1211,10 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char * memcpy(hashtth, buf, 24); free(buf); } else { - if((terms[termnum] = icmbstowcs(p, hub->charset)) != NULL) + if((terms[termnum] = icmbstowcs(p, hub->charset)) != NULL) { + wcslower(terms[termnum]); termnum++; + } } } p = p2 + 1; @@ -1244,11 +1246,12 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char * } if(!skipcheck) { + lname = wcslower(swcsdup(node->name)); for(i = 0; i < termnum; i++) { if(tersat[i] >= 0) continue; - if(wcsexists(node->name, terms[i])) + if(wcsstr(lname, terms[i])) { tersat[i] = level; satisfied++; @@ -1256,6 +1259,7 @@ static void cmd_search(struct socket *sk, struct fnetnode *fn, char *cmd, char * break; } } + free(lname); } if(!skipcheck && (satisfied == termnum)) { diff --git a/daemon/search.c b/daemon/search.c index d2d9969..b70e7ae 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; diff --git a/include/utils.h b/include/utils.h index 390d3b4..1e52949 100644 --- a/include/utils.h +++ b/include/utils.h @@ -93,7 +93,7 @@ wchar_t *wcstolower(wchar_t *wcs); wchar_t ucptowc(int ucp); void _sizebuf(void **buf, size_t *bufsize, size_t reqsize, size_t elsize, int algo); double ntime(void); -int wcsexists(wchar_t *h, wchar_t *n); +wchar_t *wcslower(wchar_t *wcs); #ifndef HAVE_WCSCASECMP int wcscasecmp(const wchar_t *s1, const wchar_t *s2); #endif -- 2.11.0