util: Update for os_stream changes.
[mesa.git] / src / gallium / auxiliary / util / u_snprintf.c
index c4f4bbd30c2341a712938125c1ded2f29be62b00..65bdd0df2b7d63609d1e15e9849c10ac4791bc9c 100644 (file)
  * <http://www.jhweiss.de/software/snprintf.html>.
  */
 
+#include "pipe/p_config.h"
+
 #if HAVE_CONFIG_H
 #include <config.h>
 #else
@@ -332,6 +334,15 @@ static void *mymemcpy(void *, void *, size_t);
 #endif /* HAVE_UINTPTR_T || defined(uintptr_t) */
 #endif /* !defined(UINTPTR_T) */
 
+/* WinCE5.0 does not have uintptr_t defined */ 
+#if (_WIN32_WCE < 600) 
+#ifdef UINTPTR_T 
+#undef UINTPTR_T 
+#endif 
+#define UINTPTR_T unsigned long int 
+#endif 
+
+
 /* Support for ptrdiff_t. */
 #ifndef PTRDIFF_T
 #if HAVE_PTRDIFF_T || defined(ptrdiff_t)
@@ -818,7 +829,7 @@ util_vsnprintf(char *str, size_t size, const char *format, va_list args)
                                        break;
                                default:
                                        intptr = va_arg(args, int *);
-                                       *intptr = len;
+                                       *intptr = (int)len;
                                        break;
                                }
                                break;
@@ -1102,7 +1113,11 @@ again:
         * Factor of ten with the number of digits needed for the fractional
         * part.  For example, if the precision is 3, the mask will be 1000.
         */
+#if defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
+       mask = (unsigned long)mypow10(precision);
+#else
        mask = (UINTMAX_T)mypow10(precision);
+#endif
        /*
         * We "cheat" by converting the fractional part to integer by
         * multiplying by a factor of ten.
@@ -1354,7 +1369,11 @@ cast(LDOUBLE value)
        if (value >= UINTMAX_MAX)
                return UINTMAX_MAX;
 
+#if defined(PIPE_SUBSYSTEM_WINDOWS_MINIPORT)
+       result = (unsigned long)value;
+#else
        result = (UINTMAX_T)value;
+#endif
        /*
         * At least on NetBSD/sparc64 3.0.2 and 4.99.30, casting long double to
         * an integer type converts e.g. 1.9 to 2 instead of 1 (which violates