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;
"Welcome to our mercurial repository"