Better support for div and ldiv in Winelib apps.
diff --git a/include/msvcrt/stdlib.h b/include/msvcrt/stdlib.h
index 35a9036..9ae998d 100644
--- a/include/msvcrt/stdlib.h
+++ b/include/msvcrt/stdlib.h
@@ -170,10 +170,7 @@
int MSVCRT(atoi)(const char*);
long MSVCRT(atol)(const char*);
void* MSVCRT(calloc)(MSVCRT(size_t),MSVCRT(size_t));
-#ifdef __i386__
-__int64 MSVCRT(div)(int,int);
-unsigned __int64 MSVCRT(ldiv)(long,long);
-#else
+#ifndef __i386__
MSVCRT(div_t) MSVCRT(div)(int,int);
MSVCRT(ldiv_t) MSVCRT(ldiv)(long,long);
#endif
@@ -242,6 +239,30 @@
static inline int putenv(const char* str) { return _putenv(str); }
static inline void swab(char* src, char* dst, int len) { _swab(src, dst, len); }
static inline char* ultoa(unsigned long value, char* str, int radix) { return _ultoa(value, str, radix); }
+
+#ifdef __i386__
+static inline div_t __wine_msvcrt_div(int num, int denom)
+{
+ extern unsigned __int64 div(int,int);
+ div_t ret;
+ unsigned __int64 res = div(num,denom);
+ ret.quot = (int)res;
+ ret.rem = (int)(res >> 32);
+ return ret;
+}
+static inline ldiv_t __wine_msvcrt_ldiv(long num, long denom)
+{
+ extern unsigned __int64 ldiv(long,long);
+ ldiv_t ret;
+ unsigned __int64 res = ldiv(num,denom);
+ ret.quot = (long)res;
+ ret.rem = (long)(res >> 32);
+ return ret;
+}
+#define div(num,denom) __wine_msvcrt_div(num,denom)
+#define ldiv(num,denom) __wine_msvcrt_ldiv(num,denom)
+#endif
+
#endif /* USE_MSVCRT_PREFIX */
#endif /* __WINE_STDLIB_H */