r600g: Use the actual Evergreen functions to query format support on Evergreen.
[mesa.git] / src / gallium / auxiliary / util / u_snprintf.c
index 61c20b48f7e4785268a61842a836dfa73736b21b..65bdd0df2b7d63609d1e15e9849c10ac4791bc9c 100644 (file)
  * <http://www.jhweiss.de/software/snprintf.html>.
  */
 
+#include "pipe/p_config.h"
+
 #if HAVE_CONFIG_H
 #include <config.h>
 #else
 #ifdef WIN32
-#define vsnprintf rpl_vsnprintf
-#define snprintf rpl_snprintf
+#define vsnprintf util_vsnprintf
+#define snprintf util_snprintf
 #define HAVE_VSNPRINTF 0
 #define HAVE_SNPRINTF 0
 #define HAVE_VASPRINTF 1 /* not needed */
@@ -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)
@@ -445,7 +456,7 @@ static UINTMAX_T myround(LDOUBLE);
 static LDOUBLE mypow10(int);
 
 int
-rpl_vsnprintf(char *str, size_t size, const char *format, va_list args)
+util_vsnprintf(char *str, size_t size, const char *format, va_list args)
 {
        LDOUBLE fvalue;
        INTMAX_T value;
@@ -783,19 +794,19 @@ rpl_vsnprintf(char *str, size_t size, const char *format, va_list args)
                                switch (cflags) {
                                case PRINT_C_CHAR:
                                        charptr = va_arg(args, signed char *);
-                                       *charptr = len;
+                                       *charptr = (signed char)len;
                                        break;
                                case PRINT_C_SHORT:
                                        shortptr = va_arg(args, short int *);
-                                       *shortptr = len;
+                                       *shortptr = (short int)len;
                                        break;
                                case PRINT_C_LONG:
                                        longptr = va_arg(args, long int *);
-                                       *longptr = len;
+                                       *longptr = (long int)len;
                                        break;
                                case PRINT_C_LLONG:
                                        llongptr = va_arg(args, LLONG *);
-                                       *llongptr = len;
+                                       *llongptr = (LLONG)len;
                                        break;
                                case PRINT_C_SIZE:
                                        /*
@@ -818,7 +829,7 @@ rpl_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
@@ -1404,7 +1423,7 @@ mymemcpy(void *dst, void *src, size_t len)
 #endif /* NEED_MYMEMCPY */
 
 int
-rpl_vasprintf(char **ret, const char *format, va_list ap)
+util_vasprintf(char **ret, const char *format, va_list ap)
 {
        size_t size;
        int len;
@@ -1422,10 +1441,10 @@ rpl_vasprintf(char **ret, const char *format, va_list ap)
 #if !HAVE_SNPRINTF
 #if HAVE_STDARG_H
 int
-rpl_snprintf(char *str, size_t size, const char *format, ...)
+util_snprintf(char *str, size_t size, const char *format, ...)
 #else
 int
-rpl_snprintf(va_alist) va_dcl
+util_snprintf(va_alist) va_dcl
 #endif /* HAVE_STDARG_H */
 {
 #if !HAVE_STDARG_H
@@ -1449,10 +1468,10 @@ rpl_snprintf(va_alist) va_dcl
 #if !HAVE_ASPRINTF
 #if HAVE_STDARG_H
 int
-rpl_asprintf(char **ret, const char *format, ...)
+util_asprintf(char **ret, const char *format, ...)
 #else
 int
-rpl_asprintf(va_alist) va_dcl
+util_asprintf(va_alist) va_dcl
 #endif /* HAVE_STDARG_H */
 {
 #if !HAVE_STDARG_H