mesa: bsearch implementation for WinCE.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Tue, 24 Jun 2008 01:58:55 +0000 (10:58 +0900)
committerKeith Whitwell <keith@tungstengraphics.com>
Mon, 22 Sep 2008 05:13:56 +0000 (22:13 -0700)
src/mesa/main/imports.c

index 7f2fca7e1da4d9cbbe2f990bfd81ea85d8537299..13cb84ca4bf7a6ed09b088d9f6c34f01152a67e9 100644 (file)
@@ -786,7 +786,24 @@ void *
 _mesa_bsearch( const void *key, const void *base, size_t nmemb, size_t size, 
                int (*compar)(const void *, const void *) )
 {
+#if defined(_WIN32_WCE)
+   void *mid;
+   int cmp;
+   while (nmemb) {
+      nmemb >>= 1;
+      mid = (char *)base + nmemb * size;
+      cmp = (*compar)(key, mid);
+      if (cmp == 0)
+        return mid;
+      if (cmp > 0) {
+        base = (char *)mid + size;
+        --nmemb;
+      }
+   }
+   return NULL;
+#else
    return bsearch(key, base, nmemb, size, compar);
+#endif
 }
 
 /*@}*/
@@ -802,7 +819,7 @@ _mesa_bsearch( const void *key, const void *base, size_t nmemb, size_t size,
 char *
 _mesa_getenv( const char *var )
 {
-#if defined(_XBOX)
+#if defined(_XBOX) || defined(_WIN32_WCE)
    return NULL;
 #else
    return getenv(var);