Mercurial > hg > freeDiameter
diff libfdproto/ostr.c @ 738:d666051658bd
Fix broken 'almostcasecmp' logic
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Wed, 02 Mar 2011 18:21:59 +0900 |
parents | e21d79595045 |
children | 4a9f08d6b6ba |
line wrap: on
line diff
--- a/libfdproto/ostr.c Wed Mar 02 16:28:14 2011 +0900 +++ b/libfdproto/ostr.c Wed Mar 02 18:21:59 2011 +0900 @@ -68,13 +68,22 @@ return a; } -/* a little less sensitive to case, slower. */ -int fd_os_almostcasecmp_int(uint8_t * os1, size_t os1sz, uint8_t * os2, size_t os2sz) +/* less sensitive to case, slower. */ +int fd_os_almostcasesrch_int(uint8_t * os1, size_t os1sz, uint8_t * os2, size_t os2sz, int *maybefurther) { int i; + int res = 0; + ASSERT( os1 && os2); + if (maybefurther) + *maybefurther = 0; + if (os1sz < os2sz) return -1; + + if (maybefurther) + *maybefurther = 1; + if (os1sz > os2sz) return 1; @@ -82,10 +91,13 @@ if (os1[i] == os2[i]) continue; + if (!res) + res = os1[i] < os2[i] ? -1 : 1; + if (asciitolower(os1[i]) == asciitolower(os2[i])) continue; - return os1[i] < os2[i] ? -1 : 1; + return res; } return 0;