From: Piotr Caban Subject: [PATCH 1/2] msvcr100: Move functions implementation to msvcrt Message-Id: <534D5890.6050108@codeweavers.com> Date: Tue, 15 Apr 2014 18:04:32 +0200 --- dlls/msvcr100/msvcr100.c | 471 -------------------------------------------- dlls/msvcr100/msvcr100.spec | 62 +++--- dlls/msvcr110/msvcr110.spec | 60 +++--- dlls/msvcr70/msvcr70.spec | 6 +- dlls/msvcr71/msvcr71.spec | 6 +- dlls/msvcr80/msvcr80.spec | 52 ++--- dlls/msvcr90/msvcr90.spec | 58 +++--- dlls/msvcrt/cpp.c | 51 +++++ dlls/msvcrt/errno.c | 24 +++ dlls/msvcrt/file.c | 102 +++++++++- dlls/msvcrt/heap.c | 90 +++++++++ dlls/msvcrt/mbcs.c | 5 + dlls/msvcrt/misc.c | 69 +++++++ dlls/msvcrt/msvcrt.spec | 31 +++ dlls/msvcrt/string.c | 13 ++ dlls/msvcrt/time.c | 22 +++ dlls/msvcrt/wcs.c | 32 +++ 17 files changed, 560 insertions(+), 594 deletions(-) diff --git a/dlls/msvcr100/msvcr100.c b/dlls/msvcr100/msvcr100.c index 28d4d6e..53805cf 100644 --- a/dlls/msvcr100/msvcr100.c +++ b/dlls/msvcr100/msvcr100.c @@ -18,482 +18,11 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#include "config.h" #include #include "stdio.h" -#include "stdlib.h" -#include "errno.h" -#include "malloc.h" -#include "mbstring.h" -#include "limits.h" -#include "sys/stat.h" #include "windef.h" #include "winbase.h" -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); - -#define INVALID_PMT(x,err) (*_errno() = (err), _invalid_parameter(NULL, NULL, NULL, 0, 0)) -#define CHECK_PMT_ERR(x,err) ((x) || (INVALID_PMT( 0, (err) ), FALSE)) -#define CHECK_PMT(x) CHECK_PMT_ERR((x), EINVAL) - -#ifdef __i386__ /* thiscall functions are i386-specific */ - -#define THISCALL(func) __thiscall_ ## func -#define THISCALL_NAME(func) __ASM_NAME("__thiscall_" #func) -#define __thiscall __stdcall -#define DEFINE_THISCALL_WRAPPER(func,args) \ - extern void THISCALL(func)(void); \ - __ASM_GLOBAL_FUNC(__thiscall_ ## func, \ - "popl %eax\n\t" \ - "pushl %ecx\n\t" \ - "pushl %eax\n\t" \ - "jmp " __ASM_NAME(#func) __ASM_STDCALL(args) ) - -#else /* __i386__ */ - -#define THISCALL(func) func -#define THISCALL_NAME(func) __ASM_NAME(#func) -#define __thiscall __cdecl -#define DEFINE_THISCALL_WRAPPER(func,args) /* nothing */ - -#endif /* __i386__ */ - -struct __type_info_node -{ - void *memPtr; - struct __type_info_node* next; -}; - -typedef struct __type_info -{ - const void *vtable; - char *name; /* Unmangled name, allocated lazily */ - char mangled[32]; /* Variable length, but we declare it large enough for static RTTI */ -} type_info; - -typedef void* (__cdecl *malloc_func_t)(size_t); -typedef void (__cdecl *free_func_t)(void*); - -extern char* __cdecl __unDName(char *,const char*,int,malloc_func_t,free_func_t,unsigned short int); - -/********************************************************************* - * stat64_to_stat32 [internal] - */ -static void stat64_to_stat32(const struct _stat64 *buf64, struct _stat32 *buf) -{ - buf->st_dev = buf64->st_dev; - buf->st_ino = buf64->st_ino; - buf->st_mode = buf64->st_mode; - buf->st_nlink = buf64->st_nlink; - buf->st_uid = buf64->st_uid; - buf->st_gid = buf64->st_gid; - buf->st_rdev = buf64->st_rdev; - buf->st_size = buf64->st_size; - buf->st_atime = buf64->st_atime; - buf->st_mtime = buf64->st_mtime; - buf->st_ctime = buf64->st_ctime; -} - - /********************************************************************* - * wmemcpy_s (MSVCR100.@) - */ -int CDECL wmemcpy_s(wchar_t *dest, size_t numberOfElements, const wchar_t *src, size_t count) -{ - TRACE("(%p %lu %p %lu)\n", dest, (unsigned long)numberOfElements, src, (unsigned long)count); - - if (!count) - return 0; - - if (!CHECK_PMT(dest != NULL)) return EINVAL; - - if (!CHECK_PMT(src != NULL)) { - memset(dest, 0, numberOfElements*sizeof(wchar_t)); - return EINVAL; - } - if (!CHECK_PMT_ERR(count <= numberOfElements, ERANGE)) { - memset(dest, 0, numberOfElements*sizeof(wchar_t)); - return ERANGE; - } - - memcpy(dest, src, sizeof(wchar_t)*count); - return 0; -} - - /********************************************************************* - * wmemmove_s (MSVCR100.@) - */ -int CDECL wmemmove_s(wchar_t *dest, size_t numberOfElements, const wchar_t *src, size_t count) -{ - TRACE("(%p %lu %p %lu)\n", dest, (unsigned long)numberOfElements, src, (unsigned long)count); - - if (!count) - return 0; - - /* Native does not seem to conform to 6.7.1.2.3 in - * http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1225.pdf - * in that it does not zero the output buffer on constraint violation. - */ - if (!CHECK_PMT(dest != NULL)) return EINVAL; - if (!CHECK_PMT(src != NULL)) return EINVAL; - if (!CHECK_PMT_ERR(count <= numberOfElements, ERANGE)) return ERANGE; - - memmove(dest, src, sizeof(wchar_t)*count); - return 0; -} - -/********************************************************************* - * _encoded_null (MSVCR100.@) - */ -void * CDECL _encoded_null(void) -{ - TRACE("\n"); - - return EncodePointer(NULL); -} - -/********************************************************************* - * _invalid_parameter_noinfo (MSVCR100.@) - */ -void CDECL _invalid_parameter_noinfo(void) -{ - _invalid_parameter( NULL, NULL, NULL, 0, 0 ); -} - -/********************************************************************* - * __sys_nerr (MSVCR100.@) - */ -int* CDECL __sys_nerr(void) -{ - return (int*)GetProcAddress(GetModuleHandleA("msvcrt.dll"), "_sys_nerr"); -} - -/********************************************************************* - * __sys_errlist (MSVCR100.@) - */ -char** CDECL __sys_errlist(void) -{ - return (char**)GetProcAddress(GetModuleHandleA("msvcrt.dll"), "_sys_errlist"); -} - -/********************************************************************* - * __clean_type_info_names_internal (MSVCR100.@) - */ -void CDECL __clean_type_info_names_internal(void *p) -{ - FIXME("(%p) stub\n", p); -} - -/********************************************************************* - * _recalloc (MSVCR100.@) - */ -void* CDECL _recalloc(void* mem, size_t num, size_t size) -{ - size_t old_size; - void *ret; - - if(!mem) - return calloc(num, size); - - size = num*size; - old_size = _msize(mem); - - ret = realloc(mem, size); - if(!ret) { - *_errno() = ENOMEM; - return NULL; - } - - if(size>old_size) - memset((BYTE*)ret+old_size, 0, size-old_size); - return ret; -} - -/********************************************************************* - * _stat32 (MSVCR100.@) - */ -int CDECL _stat32(const char *path, struct _stat32* buf) -{ - int ret; - struct _stat64 buf64; - - ret = _stat64(path, &buf64); - if (!ret) - stat64_to_stat32(&buf64, buf); - return ret; -} - -/********************************************************************* - * _wstat32 (MSVCR100.@) - */ -int CDECL _wstat32(const wchar_t *path, struct _stat32* buf) -{ - int ret; - struct _stat64 buf64; - - ret = _wstat64(path, &buf64); - if (!ret) - stat64_to_stat32(&buf64, buf); - return ret; -} - -static void stat64_to_stat32i64(const struct _stat64 *buf64, struct _stat32i64 *buf) -{ - buf->st_dev = buf64->st_dev; - buf->st_ino = buf64->st_ino; - buf->st_mode = buf64->st_mode; - buf->st_nlink = buf64->st_nlink; - buf->st_uid = buf64->st_uid; - buf->st_gid = buf64->st_gid; - buf->st_rdev = buf64->st_rdev; - buf->st_size = buf64->st_size; - buf->st_atime = buf64->st_atime; - buf->st_mtime = buf64->st_mtime; - buf->st_ctime = buf64->st_ctime; -} - -/********************************************************************* - * _stat32i64 (MSVCR100.@) - */ -int CDECL _stat32i64(const char *path, struct _stat32i64* buf) -{ - int ret; - struct _stat64 buf64; - - ret = _stat64(path, &buf64); - if (!ret) - stat64_to_stat32i64(&buf64, buf); - return ret; -} - -/********************************************************************* - * _wstat32i64 (MSVCR100.@) - */ -int CDECL _wstat32i64(const wchar_t *path, struct _stat32i64* buf) -{ - int ret; - struct _stat64 buf64; - - ret = _wstat64(path, &buf64); - if (!ret) - stat64_to_stat32i64(&buf64, buf); - return ret; -} - -static void stat64_to_stat64i32(const struct _stat64 *buf64, struct _stat64i32 *buf) -{ - buf->st_dev = buf64->st_dev; - buf->st_ino = buf64->st_ino; - buf->st_mode = buf64->st_mode; - buf->st_nlink = buf64->st_nlink; - buf->st_uid = buf64->st_uid; - buf->st_gid = buf64->st_gid; - buf->st_rdev = buf64->st_rdev; - buf->st_size = buf64->st_size; - buf->st_atime = buf64->st_atime; - buf->st_mtime = buf64->st_mtime; - buf->st_ctime = buf64->st_ctime; -} - -/********************************************************************* - * _stat64i32 (MSVCR100.@) - */ -int CDECL _stat64i32(const char* path, struct _stat64i32 * buf) -{ - int ret; - struct _stat64 buf64; - - ret = _stat64(path, &buf64); - if (!ret) - stat64_to_stat64i32(&buf64, buf); - return ret; -} - -/********************************************************************* - * _wstat64i32 (MSVCR100.@) - */ -int CDECL _wstat64i32(const wchar_t *path, struct _stat64i32 *buf) -{ - int ret; - struct _stat64 buf64; - - ret = _wstat64(path, &buf64); - if (!ret) - stat64_to_stat64i32(&buf64, buf); - return ret; -} - -/********************************************************************* - * _atoflt (MSVCR100.@) - */ -int CDECL _atoflt( _CRT_FLOAT *value, char *str ) -{ - return _atoflt_l( value, str, NULL ); -} - -/********************************************************************* - * ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z (MSVCR100.@) - */ -DEFINE_THISCALL_WRAPPER(type_info_name_internal_method,8) -const char * __thiscall type_info_name_internal_method(type_info * _this, struct __type_info_node *node) -{ - static int once; - - if (node && !once++) FIXME("type_info_node parameter ignored\n"); - - if (!_this->name) - { - /* Create and set the demangled name */ - /* Note: mangled name in type_info struct always starts with a '.', while - * it isn't valid for mangled name. - * Is this '.' really part of the mangled name, or has it some other meaning ? - */ - char* name = __unDName(0, _this->mangled + 1, 0, malloc, free, 0x2800); - if (name) - { - unsigned int len = strlen(name); - - /* It seems _unDName may leave blanks at the end of the demangled name */ - while (len && name[--len] == ' ') - name[len] = '\0'; - - if (InterlockedCompareExchangePointer((void**)&_this->name, name, NULL)) - { - /* Another thread set this member since we checked above - use it */ - free(name); - } - } - } - TRACE("(%p) returning %s\n", _this, _this->name); - return _this->name; -} - -/********************************************************************* - * _CRT_RTC_INIT (MSVCR100.@) - */ -void* CDECL _CRT_RTC_INIT(void *unk1, void *unk2, int unk3, int unk4, int unk5) -{ - TRACE("%p %p %x %x %x\n", unk1, unk2, unk3, unk4, unk5); - return NULL; -} - -/********************************************************************* - * _CRT_RTC_INITW (MSVCR100.@) - */ -void* CDECL _CRT_RTC_INITW(void *unk1, void *unk2, int unk3, int unk4, int unk5) -{ - TRACE("%p %p %x %x %x\n", unk1, unk2, unk3, unk4, unk5); - return NULL; -} - -/********************************************************************* - * _vswprintf_p (MSVCR100.@) - */ -int CDECL _vswprintf_p(wchar_t *buffer, size_t length, const wchar_t *format, __ms_va_list args) -{ - return _vswprintf_p_l(buffer, length, format, NULL, args); -} - -/********************************************************************* - * _vscwprintf_p (MSVCR100.@) - */ -int CDECL _vscwprintf_p(const wchar_t *format, __ms_va_list args) -{ - return _vscwprintf_p_l(format, NULL, args); -} - -/********************************************************************* - * _byteswap_ushort (MSVCR100.@) - */ -unsigned short CDECL _byteswap_ushort(unsigned short s) -{ - return (s<<8) + (s>>8); -} - -/********************************************************************* - * _byteswap_ulong (MSVCR100.@) - */ -ULONG CDECL _byteswap_ulong(ULONG l) -{ - return (l<<24) + ((l<<8)&0xFF0000) + ((l>>8)&0xFF00) + (l>>24); -} - -/********************************************************************* - * _byteswap_uint64 (MSVCR100.@) - */ -unsigned __int64 CDECL _byteswap_uint64(unsigned __int64 i) -{ - return (i<<56) + ((i&0xFF00)<<40) + ((i&0xFF0000)<<24) + ((i&0xFF000000)<<8) + - ((i>>8)&0xFF000000) + ((i>>24)&0xFF0000) + ((i>>40)&0xFF00) + (i>>56); -} - -/********************************************************************* - * _sprintf_p (MSVCR100.@) - */ -int CDECL _sprintf_p(char *buffer, size_t length, const char *format, ...) -{ - __ms_va_list valist; - int r; - - __ms_va_start(valist, format); - r = _vsprintf_p_l(buffer, length, format, NULL, valist); - __ms_va_end(valist); - - return r; -} - -/********************************************************************* - * _get_timezone (MSVCR100.@) - */ -int CDECL _get_timezone(LONG *timezone) -{ - if(!CHECK_PMT(timezone != NULL)) return EINVAL; - - *timezone = *(LONG*)GetProcAddress(GetModuleHandleA("msvcrt.dll"), "_timezone"); - return 0; -} - -/********************************************************************* - * _get_daylight (MSVCR100.@) - */ -int CDECL _get_daylight(int *hours) -{ - if(!CHECK_PMT(hours != NULL)) return EINVAL; - - *hours = *(int*)GetProcAddress(GetModuleHandleA("msvcrt.dll"), "_daylight"); - return 0; -} - -/* copied from dlls/msvcrt/heap.c */ -#define SAVED_PTR(x) ((void *)((DWORD_PTR)((char *)x - sizeof(void *)) & \ - ~(sizeof(void *) - 1))) - -/********************************************************************* - * _aligned_msize (MSVCR100.@) - */ -size_t CDECL _aligned_msize(void *p, size_t alignment, size_t offset) -{ - void **alloc_ptr; - - if(!CHECK_PMT(p)) return -1; - - if(alignment < sizeof(void*)) - alignment = sizeof(void*); - - alloc_ptr = SAVED_PTR(p); - return _msize(*alloc_ptr)-alignment-sizeof(void*); -} - -int CDECL MSVCR100_atoi(const char *str) -{ - return _atoi_l(str, NULL); -} - -unsigned char* CDECL MSVCR100__mbstok(unsigned char *str, const unsigned char *delim) -{ - return _mbstok_l(str, delim, NULL); -} /********************************************************************* * DllMain (MSVCR100.@) diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 76328ac..17ab634 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -430,9 +430,9 @@ @ cdecl -arch=win64 ?_invalid_parameter@@YAXPEBG00I_K@Z(wstr wstr wstr long long) msvcrt._invalid_parameter @ cdecl -arch=win32 ?_is_exception_typeof@@YAHABVtype_info@@PAU_EXCEPTION_POINTERS@@@Z(ptr ptr) msvcrt._is_exception_typeof @ cdecl -arch=win64 ?_is_exception_typeof@@YAHAEBVtype_info@@PEAU_EXCEPTION_POINTERS@@@Z(ptr ptr) msvcrt._is_exception_typeof -@ cdecl -arch=arm ?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z(ptr ptr) type_info_name_internal_method -@ thiscall -arch=i386 ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z(ptr ptr) type_info_name_internal_method -@ cdecl -arch=win64 ?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z(ptr ptr) type_info_name_internal_method +@ cdecl -arch=arm ?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z +@ thiscall -arch=i386 ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z +@ cdecl -arch=win64 ?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z @ varargs -arch=win32 ?_open@@YAHPBDHH@Z(str long) msvcrt._open @ varargs -arch=win64 ?_open@@YAHPEBDHH@Z(str long) msvcrt._open @ cdecl -arch=win32 ?_query_new_handler@@YAP6AHI@ZXZ() msvcrt.?_query_new_handler@@YAP6AHI@ZXZ @@ -520,8 +520,8 @@ @ cdecl -arch=i386 _CIsqrt() msvcrt._CIsqrt @ cdecl -arch=i386 _CItan() msvcrt._CItan @ cdecl -arch=i386 _CItanh() msvcrt._CItanh -@ cdecl _CRT_RTC_INIT(ptr ptr long long long) -@ cdecl _CRT_RTC_INITW(ptr ptr long long long) +@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcrt._CRT_RTC_INIT +@ cdecl _CRT_RTC_INITW(ptr ptr long long long) msvcrt._CRT_RTC_INITW @ stub _CreateFrameInfo @ stdcall _CxxThrowException(long long) msvcrt._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() msvcrt._EH_prolog @@ -574,7 +574,7 @@ @ extern __argc msvcrt.__argc @ extern __argv msvcrt.__argv ### extern __badioinfo #don't forward to msvcrt.__badioinfo, it has different size -@ cdecl __clean_type_info_names_internal(ptr) +@ cdecl __clean_type_info_names_internal(ptr) msvcrt.__clean_type_info_names_internal @ cdecl -arch=i386 __control87_2(long long ptr ptr) msvcrt.__control87_2 @ stub __create_locale @ cdecl __crtCompareStringA(long long str long str long) msvcrt.__crtCompareStringA @@ -659,8 +659,8 @@ @ cdecl __setusermatherr(ptr) msvcrt.__setusermatherr @ stub __strncnt @ stub __swprintf_l -@ cdecl __sys_errlist() -@ cdecl __sys_nerr() +@ cdecl __sys_errlist() msvcrt.__sys_errlist +@ cdecl __sys_nerr() msvcrt.__sys_nerr @ cdecl __threadhandle() msvcrt.__threadhandle @ cdecl __threadid() msvcrt.__threadid @ cdecl __timezone() msvcrt.__p__timezone @@ -684,7 +684,7 @@ @ extern _acmdln msvcrt._acmdln @ cdecl _aligned_free(ptr) msvcrt._aligned_free @ cdecl _aligned_malloc(long long) msvcrt._aligned_malloc -@ cdecl _aligned_msize(ptr long long) +@ cdecl _aligned_msize(ptr long long) msvcrt._aligned_msize @ cdecl _aligned_offset_malloc(long long long) msvcrt._aligned_offset_malloc @ cdecl _aligned_offset_realloc(ptr long long long) msvcrt._aligned_offset_realloc @ stub _aligned_offset_recalloc @@ -695,7 +695,7 @@ @ cdecl _atodbl(ptr str) msvcrt._atodbl @ cdecl _atodbl_l(ptr str ptr) msvcrt._atodbl_l @ cdecl _atof_l(str ptr) msvcrt._atof_l -@ cdecl _atoflt(ptr str) +@ cdecl _atoflt(ptr str) msvcrt._atoflt @ cdecl _atoflt_l(ptr str ptr) msvcrt._atoflt_l @ cdecl -ret64 _atoi64(str) msvcrt._atoi64 @ stub _atoi64_l @@ -706,9 +706,9 @@ @ cdecl _beep(long long) msvcrt._beep @ cdecl _beginthread(ptr long ptr) msvcrt._beginthread @ cdecl _beginthreadex(ptr long ptr ptr long ptr) msvcrt._beginthreadex -@ cdecl _byteswap_uint64(int64) -@ cdecl _byteswap_ulong(long) -@ cdecl _byteswap_ushort(long) +@ cdecl _byteswap_uint64(int64) msvcrt._byteswap_uint64 +@ cdecl _byteswap_ulong(long) msvcrt._byteswap_ulong +@ cdecl _byteswap_ushort(long) msvcrt._byteswap_ushort @ cdecl _c_exit() msvcrt._c_exit @ cdecl _cabs(long) msvcrt._cabs @ cdecl _callnewh(long) msvcrt._callnewh @@ -776,7 +776,7 @@ @ cdecl _dupenv_s(ptr ptr str) msvcrt._dupenv_s @ cdecl _ecvt(double long ptr ptr) msvcrt._ecvt @ cdecl _ecvt_s(str long double long ptr ptr) msvcrt._ecvt_s -@ cdecl _encoded_null() +@ cdecl _encoded_null() msvcrt._encoded_null @ cdecl _endthread() msvcrt._endthread @ cdecl _endthreadex(long) msvcrt._endthreadex @ extern _environ msvcrt._environ @@ -870,7 +870,7 @@ @ cdecl _gcvt(double long str) msvcrt._gcvt @ cdecl _gcvt_s(ptr long double long) msvcrt._gcvt_s @ cdecl _get_current_locale() msvcrt._get_current_locale -@ cdecl _get_daylight(ptr) +@ cdecl _get_daylight(ptr) msvcrt._get_daylight @ cdecl _get_doserrno(ptr) msvcrt._get_doserrno @ stub _get_dstbias @ cdecl _get_errno(ptr) msvcrt._get_errno @@ -883,7 +883,7 @@ @ cdecl _get_printf_count_output() msvcrt._get_printf_count_output @ stub _get_purecall_handler @ cdecl _get_terminate() msvcrt._get_terminate -@ cdecl _get_timezone(ptr) +@ cdecl _get_timezone(ptr) msvcrt._get_timezone @ cdecl _get_tzname(ptr str long long) msvcrt._get_tzname @ cdecl _get_unexpected() msvcrt._get_unexpected @ cdecl _get_wpgmptr(ptr) msvcrt._get_wpgmptr @@ -935,7 +935,7 @@ @ cdecl -arch=i386 _inpd(long) msvcrt._inpd @ cdecl -arch=i386 _inpw(long) msvcrt._inpw @ cdecl _invalid_parameter(wstr wstr wstr long long) msvcrt._invalid_parameter -@ cdecl _invalid_parameter_noinfo() +@ cdecl _invalid_parameter_noinfo() msvcrt._invalid_parameter_noinfo @ stub _invalid_parameter_noinfo_noreturn @ stub _invoke_watson @ extern _iob msvcrt._iob @@ -1186,7 +1186,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) MSVCR100__mbstok +@ cdecl _mbstok(str str) msvcrt.MSVCR100__mbstok @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l @@ -1241,7 +1241,7 @@ # extern _pwctype @ cdecl _read(long ptr long) msvcrt._read @ cdecl _realloc_crt(ptr long) msvcrt.realloc -@ cdecl _recalloc(ptr long long) +@ cdecl _recalloc(ptr long long) msvcrt._recalloc @ stub _recalloc_crt @ cdecl _resetstkoflw() msvcrt._resetstkoflw @ cdecl _rmdir(str) msvcrt._rmdir @@ -1318,15 +1318,15 @@ @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s @ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l -@ varargs _sprintf_p(ptr long str) +@ varargs _sprintf_p(ptr long str) msvcrt._sprintf_p @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l @ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l -@ cdecl _stat32(str ptr) -@ cdecl _stat32i64(str ptr) +@ cdecl _stat32(str ptr) msvcrt._stat32 +@ cdecl _stat32i64(str ptr) msvcrt._stat32i64 @ cdecl _stat64(str ptr) msvcrt._stat64 -@ cdecl _stat64i32(str ptr) +@ cdecl _stat64i32(str ptr) msvcrt._stat64i32 @ cdecl _statusfp() msvcrt._statusfp @ cdecl -arch=i386 _statusfp2(ptr ptr) msvcrt._statusfp2 @ cdecl _strcoll_l(str str ptr) msvcrt._strcoll_l @@ -1446,7 +1446,7 @@ @ stub _vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) msvcrt._vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) msvcrt._vscwprintf_l -@ cdecl _vscwprintf_p(wstr ptr) +@ cdecl _vscwprintf_p(wstr ptr) msvcrt._vscwprintf_p @ cdecl _vscwprintf_p_l(wstr ptr ptr) msvcrt._vscwprintf_p_l @ cdecl _vsnprintf(ptr long str ptr) msvcrt._vsnprintf @ cdecl _vsnprintf_c(ptr long str ptr) msvcrt._vsnprintf_c @@ -1466,7 +1466,7 @@ @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l @ cdecl _vswprintf_l(ptr wstr ptr ptr) msvcrt._vswprintf_l -@ cdecl _vswprintf_p(ptr long wstr ptr) +@ cdecl _vswprintf_p(ptr long wstr ptr) msvcrt._vswprintf_p @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr) msvcrt._vswprintf_p_l @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr) msvcrt._vswprintf_s_l @ stub _vwprintf_l @@ -1593,10 +1593,10 @@ @ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath @ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s -@ cdecl _wstat32(wstr ptr) -@ cdecl _wstat32i64(wstr ptr) +@ cdecl _wstat32(wstr ptr) msvcrt._wstat32 +@ cdecl _wstat32i64(wstr ptr) msvcrt._wstat32i64 @ cdecl _wstat64(wstr ptr) msvcrt._wstat64 -@ cdecl _wstat64i32(wstr ptr) +@ cdecl _wstat64i32(wstr ptr) msvcrt._wstat64i32 @ cdecl _wstrdate(ptr) msvcrt._wstrdate @ cdecl _wstrdate_s(ptr long) msvcrt._wstrdate_s @ cdecl _wstrtime(ptr) msvcrt._wstrtime @@ -1633,7 +1633,7 @@ @ cdecl -arch=arm,x86_64 atan2f(float float) msvcrt.atan2f @ cdecl atexit(ptr) msvcrt.atexit @ cdecl atof(str) msvcrt.atof -@ cdecl atoi(str) MSVCR100_atoi +@ cdecl atoi(str) msvcrt.MSVCR100_atoi @ cdecl atol(str) msvcrt.atol @ cdecl bsearch(ptr ptr long long ptr) msvcrt.bsearch @ cdecl bsearch_s(ptr ptr long long ptr ptr) msvcrt.bsearch_s @@ -1882,8 +1882,8 @@ @ cdecl wctob(long) msvcrt.wctob @ cdecl wctomb(ptr long) msvcrt.wctomb @ cdecl wctomb_s(ptr ptr long long) msvcrt.wctomb_s -@ cdecl wmemcpy_s(ptr long ptr long) -@ cdecl wmemmove_s(ptr long ptr long) +@ cdecl wmemcpy_s(ptr long ptr long) msvcrt.wmemcpy_s +@ cdecl wmemmove_s(ptr long ptr long) msvcrt.wmemmove_s @ varargs wprintf(wstr) msvcrt.wprintf @ varargs wprintf_s(wstr) msvcrt.wprintf_s @ varargs wscanf(wstr) msvcrt.wscanf diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 19e1769..981077a 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -712,9 +712,9 @@ @ cdecl -arch=win64 ?_invalid_parameter@@YAXPEBG00I_K@Z(wstr wstr wstr long long) msvcrt._invalid_parameter @ cdecl -arch=win32 ?_is_exception_typeof@@YAHABVtype_info@@PAU_EXCEPTION_POINTERS@@@Z(ptr ptr) msvcrt._is_exception_typeof @ cdecl -arch=win64 ?_is_exception_typeof@@YAHAEBVtype_info@@PEAU_EXCEPTION_POINTERS@@@Z(ptr ptr) msvcrt._is_exception_typeof -@ cdecl -arch=arm ?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z(ptr ptr) msvcr100.?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z -@ thiscall -arch=i386 ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z(ptr ptr) msvcr100.?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z -@ cdecl -arch=win64 ?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z(ptr ptr) msvcr100.?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z +@ cdecl -arch=arm ?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z +@ thiscall -arch=i386 ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z +@ cdecl -arch=win64 ?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z @ varargs -arch=win32 ?_open@@YAHPBDHH@Z(str long) msvcrt._open @ varargs -arch=win64 ?_open@@YAHPEBDHH@Z(str long) msvcrt._open @ cdecl -arch=win32 ?_query_new_handler@@YAP6AHI@ZXZ() msvcrt.?_query_new_handler@@YAP6AHI@ZXZ @@ -840,8 +840,8 @@ @ cdecl -arch=i386 _CIsqrt() msvcrt._CIsqrt @ cdecl -arch=i386 _CItan() msvcrt._CItan @ cdecl -arch=i386 _CItanh() msvcrt._CItanh -@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcr100._CRT_RTC_INIT -@ cdecl _CRT_RTC_INITW(ptr ptr long long long) msvcr100._CRT_RTC_INITW +@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcrt._CRT_RTC_INIT +@ cdecl _CRT_RTC_INITW(ptr ptr long long long) msvcrt._CRT_RTC_INITW @ stub _CreateFrameInfo @ stdcall _CxxThrowException(long long) msvcrt._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() msvcrt._EH_prolog @@ -901,7 +901,7 @@ @ extern __argc msvcrt.__argc @ extern __argv msvcrt.__argv ### extern __badioinfo #don't forward to msvcrt.__badioinfo, it has different size -@ cdecl __clean_type_info_names_internal(ptr) msvcr100.__clean_type_info_names_internal +@ cdecl __clean_type_info_names_internal(ptr) msvcrt.__clean_type_info_names_internal @ cdecl -arch=i386 __control87_2(long long ptr ptr) msvcrt.__control87_2 @ stub __create_locale @ stub -arch=win64 __crtCaptureCurrentContext @@ -1007,8 +1007,8 @@ @ cdecl __setusermatherr(ptr) msvcrt.__setusermatherr @ stub __strncnt @ stub __swprintf_l -@ cdecl __sys_errlist() msvcr100.__sys_errlist -@ cdecl __sys_nerr() msvcr100.__sys_nerr +@ cdecl __sys_errlist() msvcrt.__sys_errlist +@ cdecl __sys_nerr() msvcrt.__sys_nerr @ cdecl __threadhandle() msvcrt.__threadhandle @ cdecl __threadid() msvcrt.__threadid @ cdecl __timezone() msvcrt.__p__timezone @@ -1032,7 +1032,7 @@ @ extern _acmdln msvcrt._acmdln @ cdecl _aligned_free(ptr) msvcrt._aligned_free @ cdecl _aligned_malloc(long long) msvcrt._aligned_malloc -@ cdecl _aligned_msize(ptr long long) msvcr100._aligned_msize +@ cdecl _aligned_msize(ptr long long) msvcrt._aligned_msize @ cdecl _aligned_offset_malloc(long long long) msvcrt._aligned_offset_malloc @ cdecl _aligned_offset_realloc(ptr long long long) msvcrt._aligned_offset_realloc @ stub _aligned_offset_recalloc @@ -1043,7 +1043,7 @@ @ cdecl _atodbl(ptr str) msvcrt._atodbl @ cdecl _atodbl_l(ptr str ptr) msvcrt._atodbl_l @ cdecl _atof_l(str ptr) msvcrt._atof_l -@ cdecl _atoflt(ptr str) msvcr100._atoflt +@ cdecl _atoflt(ptr str) msvcrt._atoflt @ cdecl _atoflt_l(ptr str ptr) msvcrt._atoflt_l @ cdecl -ret64 _atoi64(str) msvcrt._atoi64 @ stub _atoi64_l @@ -1054,9 +1054,9 @@ @ cdecl _beep(long long) msvcrt._beep @ cdecl _beginthread(ptr long ptr) msvcrt._beginthread @ cdecl _beginthreadex(ptr long ptr ptr long ptr) msvcrt._beginthreadex -@ cdecl _byteswap_uint64(int64) msvcr100._byteswap_uint64 -@ cdecl _byteswap_ulong(long) msvcr100._byteswap_ulong -@ cdecl _byteswap_ushort(long) msvcr100._byteswap_ushort +@ cdecl _byteswap_uint64(int64) msvcrt._byteswap_uint64 +@ cdecl _byteswap_ulong(long) msvcrt._byteswap_ulong +@ cdecl _byteswap_ushort(long) msvcrt._byteswap_ushort @ cdecl _c_exit() msvcrt._c_exit @ cdecl _cabs(long) msvcrt._cabs @ cdecl _callnewh(long) msvcrt._callnewh @@ -1218,7 +1218,7 @@ @ cdecl _gcvt(double long str) msvcrt._gcvt @ cdecl _gcvt_s(ptr long double long) msvcrt._gcvt_s @ cdecl _get_current_locale() msvcrt._get_current_locale -@ cdecl _get_daylight(ptr) msvcr100._get_daylight +@ cdecl _get_daylight(ptr) msvcrt._get_daylight @ cdecl _get_doserrno(ptr) msvcrt._get_doserrno @ stub _get_dstbias @ cdecl _get_errno(ptr) msvcrt._get_errno @@ -1231,7 +1231,7 @@ @ cdecl _get_printf_count_output() msvcrt._get_printf_count_output @ stub _get_purecall_handler @ cdecl _get_terminate() msvcrt._get_terminate -@ cdecl _get_timezone(ptr) msvcr100._get_timezone +@ cdecl _get_timezone(ptr) msvcrt._get_timezone @ cdecl _get_tzname(ptr str long long) msvcrt._get_tzname @ cdecl _get_unexpected() msvcrt._get_unexpected @ cdecl _get_wpgmptr(ptr) msvcrt._get_wpgmptr @@ -1282,7 +1282,7 @@ @ cdecl -arch=i386 _inpd(long) msvcrt._inpd @ cdecl -arch=i386 _inpw(long) msvcrt._inpw @ cdecl _invalid_parameter(wstr wstr wstr long long) msvcrt._invalid_parameter -@ cdecl _invalid_parameter_noinfo() msvcr100._invalid_parameter_noinfo +@ cdecl _invalid_parameter_noinfo() msvcrt._invalid_parameter_noinfo @ stub _invalid_parameter_noinfo_noreturn @ stub _invoke_watson @ extern _iob msvcrt._iob @@ -1544,7 +1544,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt +@ cdecl _mbstok(str str) msvcrt.MSVCR100__mbstok @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l @@ -1599,7 +1599,7 @@ # extern _pwctype @ cdecl _read(long ptr long) msvcrt._read @ cdecl _realloc_crt(ptr long) msvcrt.realloc -@ cdecl _recalloc(ptr long long) msvcr100._recalloc +@ cdecl _recalloc(ptr long long) msvcrt._recalloc @ stub _recalloc_crt @ cdecl _resetstkoflw() msvcrt._resetstkoflw @ cdecl _rmdir(str) msvcrt._rmdir @@ -1676,15 +1676,15 @@ @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s @ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l -@ varargs _sprintf_p(ptr long str) msvcr100._sprintf_p +@ varargs _sprintf_p(ptr long str) msvcrt._sprintf_p @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l @ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l -@ cdecl _stat32(str ptr) msvcr100._stat32 -@ cdecl _stat32i64(str ptr) msvcr100._stat32i64 +@ cdecl _stat32(str ptr) msvcrt._stat32 +@ cdecl _stat32i64(str ptr) msvcrt._stat32i64 @ cdecl _stat64(str ptr) msvcrt._stat64 -@ cdecl _stat64i32(str ptr) msvcr100._stat64i32 +@ cdecl _stat64i32(str ptr) msvcrt._stat64i32 @ cdecl _statusfp() msvcrt._statusfp @ cdecl -arch=i386 _statusfp2(ptr ptr) msvcrt._statusfp2 @ cdecl _strcoll_l(str str ptr) msvcrt._strcoll_l @@ -1804,7 +1804,7 @@ @ stub _vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) msvcrt._vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) msvcrt._vscwprintf_l -@ cdecl _vscwprintf_p(wstr ptr) msvcr100._vscwprintf_p +@ cdecl _vscwprintf_p(wstr ptr) msvcrt._vscwprintf_p @ cdecl _vscwprintf_p_l(wstr ptr ptr) msvcrt._vscwprintf_p_l @ cdecl _vsnprintf(ptr long str ptr) msvcrt._vsnprintf @ cdecl _vsnprintf_c(ptr long str ptr) msvcrt._vsnprintf_c @@ -1824,7 +1824,7 @@ @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l @ cdecl _vswprintf_l(ptr wstr ptr ptr) msvcrt._vswprintf_l -@ cdecl _vswprintf_p(ptr long wstr ptr) msvcr100._vswprintf_p +@ cdecl _vswprintf_p(ptr long wstr ptr) msvcrt._vswprintf_p @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr) msvcrt._vswprintf_p_l @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr) msvcrt._vswprintf_s_l @ stub _vwprintf_l @@ -1951,10 +1951,10 @@ @ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath @ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s -@ cdecl _wstat32(wstr ptr) msvcr100._wstat32 -@ cdecl _wstat32i64(wstr ptr) msvcr100._wstat32i64 +@ cdecl _wstat32(wstr ptr) msvcrt._wstat32 +@ cdecl _wstat32i64(wstr ptr) msvcrt._wstat32i64 @ cdecl _wstat64(wstr ptr) msvcrt._wstat64 -@ cdecl _wstat64i32(wstr ptr) msvcr100._wstat64i32 +@ cdecl _wstat64i32(wstr ptr) msvcrt._wstat64i32 @ cdecl _wstrdate(ptr) msvcrt._wstrdate @ cdecl _wstrdate_s(ptr long) msvcrt._wstrdate_s @ cdecl _wstrtime(ptr) msvcrt._wstrtime @@ -1991,7 +1991,7 @@ @ cdecl -arch=arm,x86_64 atan2f(float float) msvcrt.atan2f @ cdecl atexit(ptr) msvcrt.atexit @ cdecl atof(str) msvcrt.atof -@ cdecl atoi(str) msvcr100.atoi #don't forward to msvcrt +@ cdecl atoi(str) msvcrt.MSVCR100_atoi @ cdecl atol(str) msvcrt.atol @ cdecl bsearch(ptr ptr long long ptr) msvcrt.bsearch @ cdecl bsearch_s(ptr ptr long long ptr ptr) msvcrt.bsearch_s @@ -2241,8 +2241,8 @@ @ cdecl wctob(long) msvcrt.wctob @ cdecl wctomb(ptr long) msvcrt.wctomb @ cdecl wctomb_s(ptr ptr long long) msvcrt.wctomb_s -@ cdecl wmemcpy_s(ptr long ptr long) msvcr100.wmemcpy_s -@ cdecl wmemmove_s(ptr long ptr long) msvcr100.wmemmove_s +@ cdecl wmemcpy_s(ptr long ptr long) msvcrt.wmemcpy_s +@ cdecl wmemmove_s(ptr long ptr long) msvcrt.wmemmove_s @ varargs wprintf(wstr) msvcrt.wprintf @ varargs wprintf_s(wstr) msvcrt.wprintf_s @ varargs wscanf(wstr) msvcrt.wscanf diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index fbd4506..4ebdcfc 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -107,7 +107,7 @@ @ cdecl -arch=i386 _CIsqrt() msvcrt._CIsqrt @ cdecl -arch=i386 _CItan() msvcrt._CItan @ cdecl -arch=i386 _CItanh() msvcrt._CItanh -@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcr100._CRT_RTC_INIT +@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcrt._CRT_RTC_INIT @ stdcall _CxxThrowException(long long) msvcrt._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() msvcrt._EH_prolog @ cdecl _Getdays() msvcrt._Getdays @@ -468,7 +468,7 @@ @ cdecl _mbsspn(str str) msvcrt._mbsspn @ cdecl _mbsspnp(str str) msvcrt._mbsspnp @ cdecl _mbsstr(str str) msvcrt._mbsstr -@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt +@ cdecl _mbstok(str str) msvcrt.MSVCR100__mbstok @ cdecl _mbstrlen(str) msvcrt._mbstrlen @ cdecl _mbsupr(str) msvcrt._mbsupr @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy @@ -688,7 +688,7 @@ @ cdecl atan2(double double) msvcrt.atan2 @ cdecl atexit(ptr) msvcrt.atexit @ cdecl atof(str) msvcrt.atof -@ cdecl atoi(str) msvcr100.atoi #don't forward to msvcrt +@ cdecl atoi(str) msvcrt.MSVCR100_atoi @ cdecl atol(str) msvcrt.atol @ cdecl bsearch(ptr ptr long long ptr) msvcrt.bsearch @ cdecl calloc(long long) msvcrt.calloc diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index 5f536c0..e7dcb51 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -101,7 +101,7 @@ @ cdecl -arch=i386 _CIsqrt() msvcrt._CIsqrt @ cdecl -arch=i386 _CItan() msvcrt._CItan @ cdecl -arch=i386 _CItanh() msvcrt._CItanh -@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcr100._CRT_RTC_INIT +@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcrt._CRT_RTC_INIT @ stdcall _CxxThrowException(long long) msvcrt._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() msvcrt._EH_prolog @ cdecl _Getdays() msvcrt._Getdays @@ -463,7 +463,7 @@ @ cdecl _mbsspn(str str) msvcrt._mbsspn @ cdecl _mbsspnp(str str) msvcrt._mbsspnp @ cdecl _mbsstr(str str) msvcrt._mbsstr -@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt +@ cdecl _mbstok(str str) msvcrt.MSVCR100__mbstok @ cdecl _mbstrlen(str) msvcrt._mbstrlen @ cdecl _mbsupr(str) msvcrt._mbsupr @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy @@ -684,7 +684,7 @@ @ cdecl atan2(double double) msvcrt.atan2 @ cdecl atexit(ptr) msvcrt.atexit @ cdecl atof(str) msvcrt.atof -@ cdecl atoi(str) msvcr100.atoi #don't forward to msvcrt +@ cdecl atoi(str) msvcrt.MSVCR100_atoi @ cdecl atol(str) msvcrt.atol @ cdecl bsearch(ptr ptr long long ptr) msvcrt.bsearch @ cdecl calloc(long long) msvcrt.calloc diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 11c4e2f..a6f3c71 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -150,8 +150,8 @@ @ cdecl -arch=i386 _CIsqrt() msvcrt._CIsqrt @ cdecl -arch=i386 _CItan() msvcrt._CItan @ cdecl -arch=i386 _CItanh() msvcrt._CItanh -@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcr100._CRT_RTC_INIT -@ cdecl _CRT_RTC_INITW(ptr ptr long long long) msvcr100._CRT_RTC_INITW +@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcrt._CRT_RTC_INIT +@ cdecl _CRT_RTC_INITW(ptr ptr long long long) msvcrt._CRT_RTC_INITW @ stub _CreateFrameInfo @ stdcall _CxxThrowException(long long) msvcrt._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() msvcrt._EH_prolog @@ -208,7 +208,7 @@ @ extern __argc msvcrt.__argc @ extern __argv msvcrt.__argv ### extern __badioinfo #don't forward to msvcrt.__badioinfo, it has different size -@ cdecl __clean_type_info_names_internal(ptr) msvcr100.__clean_type_info_names_internal +@ cdecl __clean_type_info_names_internal(ptr) msvcrt.__clean_type_info_names_internal @ cdecl -arch=i386 __control87_2(long long ptr ptr) msvcrt.__control87_2 @ stub __create_locale @ cdecl __crtCompareStringA(long long str long str long) msvcrt.__crtCompareStringA @@ -308,8 +308,8 @@ @ cdecl __setusermatherr(ptr) msvcrt.__setusermatherr @ stub __strncnt @ stub __swprintf_l -@ cdecl __sys_errlist() msvcr100.__sys_errlist -@ cdecl __sys_nerr() msvcr100.__sys_nerr +@ cdecl __sys_errlist() msvcrt.__sys_errlist +@ cdecl __sys_nerr() msvcrt.__sys_nerr @ cdecl __threadhandle() msvcrt.__threadhandle @ cdecl __threadid() msvcrt.__threadid @ cdecl __timezone() msvcrt.__p__timezone @@ -348,7 +348,7 @@ @ extern _aexit_rtn msvcrt._aexit_rtn @ cdecl _aligned_free(ptr) msvcrt._aligned_free @ cdecl _aligned_malloc(long long) msvcrt._aligned_malloc -@ cdecl _aligned_msize(ptr long long) msvcr100._aligned_msize +@ cdecl _aligned_msize(ptr long long) msvcrt._aligned_msize @ cdecl _aligned_offset_malloc(long long long) msvcrt._aligned_offset_malloc @ cdecl _aligned_offset_realloc(ptr long long long) msvcrt._aligned_offset_realloc @ stub _aligned_offset_recalloc @@ -359,7 +359,7 @@ @ cdecl _atodbl(ptr str) msvcrt._atodbl @ cdecl _atodbl_l(ptr str ptr) msvcrt._atodbl_l @ cdecl _atof_l(str ptr) msvcrt._atof_l -@ cdecl _atoflt(ptr str) msvcr100._atoflt +@ cdecl _atoflt(ptr str) msvcrt._atoflt @ cdecl _atoflt_l(ptr str ptr) msvcrt._atoflt_l @ cdecl -ret64 _atoi64(str) msvcrt._atoi64 @ stub _atoi64_l @@ -370,9 +370,9 @@ @ cdecl _beep(long long) msvcrt._beep @ cdecl _beginthread(ptr long ptr) msvcrt._beginthread @ cdecl _beginthreadex(ptr long ptr ptr long ptr) msvcrt._beginthreadex -@ cdecl _byteswap_uint64(int64) msvcr100._byteswap_uint64 -@ cdecl _byteswap_ulong(long) msvcr100._byteswap_ulong -@ cdecl _byteswap_ushort(long) msvcr100._byteswap_ushort +@ cdecl _byteswap_uint64(int64) msvcrt._byteswap_uint64 +@ cdecl _byteswap_ulong(long) msvcrt._byteswap_ulong +@ cdecl _byteswap_ushort(long) msvcrt._byteswap_ushort @ cdecl _c_exit() msvcrt._c_exit @ cdecl _cabs(long) msvcrt._cabs @ cdecl _callnewh(long) msvcrt._callnewh @@ -443,7 +443,7 @@ @ cdecl _ecvt(double long ptr ptr) msvcrt._ecvt @ cdecl _ecvt_s(str long double long ptr ptr) msvcrt._ecvt_s @ cdecl _encode_pointer(ptr) MSVCR80__encode_pointer -@ cdecl _encoded_null() msvcr100._encoded_null +@ cdecl _encoded_null() msvcrt._encoded_null @ cdecl _endthread() msvcrt._endthread @ cdecl _endthreadex(long) msvcrt._endthreadex @ extern _environ msvcrt._environ @@ -538,7 +538,7 @@ @ cdecl _gcvt_s(ptr long double long) msvcrt._gcvt_s @ stub _get_amblksiz @ cdecl _get_current_locale() msvcrt._get_current_locale -@ cdecl _get_daylight(ptr) msvcr100._get_daylight +@ cdecl _get_daylight(ptr) msvcrt._get_daylight @ cdecl _get_doserrno(ptr) msvcrt._get_doserrno @ stub _get_dstbias @ cdecl _get_errno(ptr) msvcrt._get_errno @@ -554,7 +554,7 @@ @ stub _get_purecall_handler @ cdecl _get_sbh_threshold() msvcrt._get_sbh_threshold @ cdecl _get_terminate() msvcrt._get_terminate -@ cdecl _get_timezone(ptr) msvcr100._get_timezone +@ cdecl _get_timezone(ptr) msvcrt._get_timezone @ cdecl _get_tzname(ptr str long long) msvcrt._get_tzname @ cdecl _get_unexpected() msvcrt._get_unexpected @ stub _get_winmajor @@ -608,7 +608,7 @@ @ cdecl -arch=i386 _inpd(long) msvcrt._inpd @ cdecl -arch=i386 _inpw(long) msvcrt._inpw @ cdecl _invalid_parameter(wstr wstr wstr long long) msvcrt._invalid_parameter -@ cdecl _invalid_parameter_noinfo() msvcr100._invalid_parameter_noinfo +@ cdecl _invalid_parameter_noinfo() msvcrt._invalid_parameter_noinfo @ stub _invoke_watson @ extern _iob msvcrt._iob @ cdecl _isalnum_l(long ptr) msvcrt._isalnum_l @@ -858,7 +858,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt +@ cdecl _mbstok(str str) msvcrt.MSVCR100__mbstok @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l @@ -915,7 +915,7 @@ # extern _pwctype @ cdecl _read(long ptr long) msvcrt._read @ cdecl _realloc_crt(ptr long) msvcrt.realloc -@ cdecl _recalloc(ptr long long) msvcr100._recalloc +@ cdecl _recalloc(ptr long long) msvcrt._recalloc @ stub _recalloc_crt @ cdecl _resetstkoflw() msvcrt._resetstkoflw @ cdecl _rmdir(str) msvcrt._rmdir @@ -998,15 +998,15 @@ @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s @ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l -@ varargs _sprintf_p(ptr long str) msvcr100._sprintf_p +@ varargs _sprintf_p(ptr long str) msvcrt._sprintf_p @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l @ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l -@ cdecl _stat32(str ptr) msvcr100._stat32 -@ cdecl _stat32i64(str ptr) msvcr100._stat32i64 +@ cdecl _stat32(str ptr) msvcrt._stat32 +@ cdecl _stat32i64(str ptr) msvcrt._stat32i64 @ cdecl _stat64(str ptr) msvcrt._stat64 -@ cdecl _stat64i32(str ptr) msvcr100._stat64i32 +@ cdecl _stat64i32(str ptr) msvcrt._stat64i32 @ cdecl _statusfp() msvcrt._statusfp @ cdecl -arch=i386 _statusfp2(ptr ptr) msvcrt._statusfp2 @ cdecl _strcoll_l(str str ptr) msvcrt._strcoll_l @@ -1125,7 +1125,7 @@ @ stub _vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) msvcrt._vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) msvcrt._vscwprintf_l -@ cdecl _vscwprintf_p(wstr ptr) msvcr100._vscwprintf_p +@ cdecl _vscwprintf_p(wstr ptr) msvcrt._vscwprintf_p @ cdecl _vscwprintf_p_l(wstr ptr ptr) msvcrt._vscwprintf_p_l @ cdecl _vsnprintf(ptr long str ptr) msvcrt._vsnprintf @ cdecl _vsnprintf_c(ptr long str ptr) msvcrt._vsnprintf_c @@ -1145,7 +1145,7 @@ @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l @ cdecl _vswprintf_l(ptr wstr ptr ptr) msvcrt._vswprintf_l -@ cdecl _vswprintf_p(ptr long wstr ptr) msvcr100._vswprintf_p +@ cdecl _vswprintf_p(ptr long wstr ptr) msvcrt._vswprintf_p @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr) msvcrt._vswprintf_p_l @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr) msvcrt._vswprintf_s_l @ stub _vwprintf_l @@ -1275,10 +1275,10 @@ @ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath @ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s -@ cdecl _wstat32(wstr ptr) msvcr100._wstat32 -@ cdecl _wstat32i64(wstr ptr) msvcr100._wstat32i64 +@ cdecl _wstat32(wstr ptr) msvcrt._wstat32 +@ cdecl _wstat32i64(wstr ptr) msvcrt._wstat32i64 @ cdecl _wstat64(wstr ptr) msvcrt._wstat64 -@ cdecl _wstat64i32(wstr ptr) msvcr100._wstat64i32 +@ cdecl _wstat64i32(wstr ptr) msvcrt._wstat64i32 @ cdecl _wstrdate(ptr) msvcrt._wstrdate @ cdecl _wstrdate_s(ptr long) msvcrt._wstrdate_s @ cdecl _wstrtime(ptr) msvcrt._wstrtime @@ -1315,7 +1315,7 @@ @ cdecl -arch=arm,x86_64 atan2f(float float) msvcrt.atan2f @ cdecl atexit(ptr) msvcrt.atexit @ cdecl atof(str) msvcrt.atof -@ cdecl atoi(str) msvcr100.atoi #don't forward to msvcrt +@ cdecl atoi(str) msvcrt.MSVCR100_atoi @ cdecl atol(str) msvcrt.atol @ cdecl bsearch(ptr ptr long long ptr) msvcrt.bsearch @ cdecl bsearch_s(ptr ptr long long ptr ptr) msvcrt.bsearch_s diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 79a6e53..55785ad 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -86,9 +86,9 @@ @ cdecl -arch=win64 ?_invalid_parameter@@YAXPEBG00I_K@Z(wstr wstr wstr long long) msvcrt._invalid_parameter @ cdecl -arch=win32 ?_is_exception_typeof@@YAHABVtype_info@@PAU_EXCEPTION_POINTERS@@@Z(ptr ptr) msvcrt._is_exception_typeof @ cdecl -arch=win64 ?_is_exception_typeof@@YAHAEBVtype_info@@PEAU_EXCEPTION_POINTERS@@@Z(ptr ptr) msvcrt._is_exception_typeof -@ cdecl -arch=arm ?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z(ptr ptr) msvcr100.?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z -@ thiscall -arch=i386 ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z(ptr ptr) msvcr100.?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z -@ cdecl -arch=win64 ?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z(ptr ptr) msvcr100.?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z +@ cdecl -arch=arm ?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z +@ thiscall -arch=i386 ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z +@ cdecl -arch=win64 ?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z(ptr ptr) msvcrt.?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z @ varargs -arch=win32 ?_open@@YAHPBDHH@Z(str long) msvcrt._open @ varargs -arch=win64 ?_open@@YAHPEBDHH@Z(str long) msvcrt._open @ cdecl -arch=win32 ?_query_new_handler@@YAP6AHI@ZXZ() msvcrt.?_query_new_handler@@YAP6AHI@ZXZ @@ -147,8 +147,8 @@ @ cdecl -arch=i386 _CIsqrt() msvcrt._CIsqrt @ cdecl -arch=i386 _CItan() msvcrt._CItan @ cdecl -arch=i386 _CItanh() msvcrt._CItanh -@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcr100._CRT_RTC_INIT -@ cdecl _CRT_RTC_INITW(ptr ptr long long long) msvcr100._CRT_RTC_INITW +@ cdecl _CRT_RTC_INIT(ptr ptr long long long) msvcrt._CRT_RTC_INIT +@ cdecl _CRT_RTC_INITW(ptr ptr long long long) msvcrt._CRT_RTC_INITW @ stub _CreateFrameInfo @ stdcall _CxxThrowException(long long) msvcrt._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() msvcrt._EH_prolog @@ -199,7 +199,7 @@ @ extern __argc msvcrt.__argc @ extern __argv msvcrt.__argv ### extern __badioinfo #don't forward to msvcrt.__badioinfo, it has different size -@ cdecl __clean_type_info_names_internal(ptr) msvcr100.__clean_type_info_names_internal +@ cdecl __clean_type_info_names_internal(ptr) msvcrt.__clean_type_info_names_internal @ cdecl -arch=i386 __control87_2(long long ptr ptr) msvcrt.__control87_2 @ stub __create_locale @ cdecl __crtCompareStringA(long long str long str long) msvcrt.__crtCompareStringA @@ -292,8 +292,8 @@ @ cdecl __setusermatherr(ptr) msvcrt.__setusermatherr @ stub __strncnt @ stub __swprintf_l -@ cdecl __sys_errlist() msvcr100.__sys_errlist -@ cdecl __sys_nerr() msvcr100.__sys_nerr +@ cdecl __sys_errlist() msvcrt.__sys_errlist +@ cdecl __sys_nerr() msvcrt.__sys_nerr @ cdecl __threadhandle() msvcrt.__threadhandle @ cdecl __threadid() msvcrt.__threadid @ cdecl __timezone() msvcrt.__p__timezone @@ -332,7 +332,7 @@ @ extern _aexit_rtn msvcrt._aexit_rtn @ cdecl _aligned_free(ptr) msvcrt._aligned_free @ cdecl _aligned_malloc(long long) msvcrt._aligned_malloc -@ cdecl _aligned_msize(ptr long long) msvcr100._aligned_msize +@ cdecl _aligned_msize(ptr long long) msvcrt._aligned_msize @ cdecl _aligned_offset_malloc(long long long) msvcrt._aligned_offset_malloc @ cdecl _aligned_offset_realloc(ptr long long long) msvcrt._aligned_offset_realloc @ stub _aligned_offset_recalloc @@ -343,7 +343,7 @@ @ cdecl _atodbl(ptr str) msvcrt._atodbl @ cdecl _atodbl_l(ptr str ptr) msvcrt._atodbl_l @ cdecl _atof_l(str ptr) msvcrt._atof_l -@ cdecl _atoflt(ptr str) msvcr100._atoflt +@ cdecl _atoflt(ptr str) msvcrt._atoflt @ cdecl _atoflt_l(ptr str ptr) msvcrt._atoflt_l @ cdecl -ret64 _atoi64(str) msvcrt._atoi64 @ stub _atoi64_l @@ -354,9 +354,9 @@ @ cdecl _beep(long long) msvcrt._beep @ cdecl _beginthread(ptr long ptr) msvcrt._beginthread @ cdecl _beginthreadex(ptr long ptr ptr long ptr) msvcrt._beginthreadex -@ cdecl _byteswap_uint64(int64) msvcr100._byteswap_uint64 -@ cdecl _byteswap_ulong(long) msvcr100._byteswap_ulong -@ cdecl _byteswap_ushort(long) msvcr100._byteswap_ushort +@ cdecl _byteswap_uint64(int64) msvcrt._byteswap_uint64 +@ cdecl _byteswap_ulong(long) msvcrt._byteswap_ulong +@ cdecl _byteswap_ushort(long) msvcrt._byteswap_ushort @ cdecl _c_exit() msvcrt._c_exit @ cdecl _cabs(long) msvcrt._cabs @ cdecl _callnewh(long) msvcrt._callnewh @@ -425,7 +425,7 @@ @ cdecl _ecvt(double long ptr ptr) msvcrt._ecvt @ cdecl _ecvt_s(str long double long ptr ptr) msvcrt._ecvt_s @ cdecl _encode_pointer(ptr) MSVCR90_encode_pointer -@ cdecl _encoded_null() msvcr100._encoded_null +@ cdecl _encoded_null() msvcrt._encoded_null @ cdecl _endthread() msvcrt._endthread @ cdecl _endthreadex(long) msvcrt._endthreadex @ extern _environ msvcrt._environ @@ -520,7 +520,7 @@ @ cdecl _gcvt_s(ptr long double long) msvcrt._gcvt_s @ stub _get_amblksiz @ cdecl _get_current_locale() msvcrt._get_current_locale -@ cdecl _get_daylight(ptr) msvcr100._get_daylight +@ cdecl _get_daylight(ptr) msvcrt._get_daylight @ cdecl _get_doserrno(ptr) msvcrt._get_doserrno @ stub _get_dstbias @ cdecl _get_errno(ptr) msvcrt._get_errno @@ -534,7 +534,7 @@ @ stub _get_purecall_handler @ cdecl _get_sbh_threshold() msvcrt._get_sbh_threshold @ cdecl _get_terminate() msvcrt._get_terminate -@ cdecl _get_timezone(ptr) msvcr100._get_timezone +@ cdecl _get_timezone(ptr) msvcrt._get_timezone @ cdecl _get_tzname(ptr str long long) msvcrt._get_tzname @ cdecl _get_unexpected() msvcrt._get_unexpected @ cdecl _get_wpgmptr(ptr) msvcrt._get_wpgmptr @@ -586,7 +586,7 @@ @ cdecl -arch=i386 _inpd(long) msvcrt._inpd @ cdecl -arch=i386 _inpw(long) msvcrt._inpw @ cdecl _invalid_parameter(wstr wstr wstr long long) msvcrt._invalid_parameter -@ cdecl _invalid_parameter_noinfo() msvcr100._invalid_parameter_noinfo +@ cdecl _invalid_parameter_noinfo() msvcrt._invalid_parameter_noinfo @ stub _invoke_watson @ extern _iob msvcrt._iob @ cdecl _isalnum_l(long ptr) msvcrt._isalnum_l @@ -836,7 +836,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt +@ cdecl _mbstok(str str) msvcrt.MSVCR100__mbstok @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l @@ -891,7 +891,7 @@ # extern _pwctype @ cdecl _read(long ptr long) msvcrt._read @ cdecl _realloc_crt(ptr long) msvcrt.realloc -@ cdecl _recalloc(ptr long long) msvcr100._recalloc +@ cdecl _recalloc(ptr long long) msvcrt._recalloc @ stub _recalloc_crt @ cdecl _resetstkoflw() msvcrt._resetstkoflw @ cdecl _rmdir(str) msvcrt._rmdir @@ -973,15 +973,15 @@ @ cdecl _splitpath(str ptr ptr ptr ptr) msvcrt._splitpath @ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long) msvcrt._splitpath_s @ varargs _sprintf_l(ptr str ptr) msvcrt._sprintf_l -@ varargs _sprintf_p(ptr long str) msvcr100._sprintf_p +@ varargs _sprintf_p(ptr long str) msvcrt._sprintf_p @ varargs _sprintf_p_l(ptr long str ptr) msvcrt._sprintf_p_l @ varargs _sprintf_s_l(ptr long str ptr) msvcrt._sprintf_s_l @ varargs _sscanf_l(str str ptr) msvcrt._sscanf_l @ varargs _sscanf_s_l(str str ptr) msvcrt._sscanf_s_l -@ cdecl _stat32(str ptr) msvcr100._stat32 -@ cdecl _stat32i64(str ptr) msvcr100._stat32i64 +@ cdecl _stat32(str ptr) msvcrt._stat32 +@ cdecl _stat32i64(str ptr) msvcrt._stat32i64 @ cdecl _stat64(str ptr) msvcrt._stat64 -@ cdecl _stat64i32(str ptr) msvcr100._stat64i32 +@ cdecl _stat64i32(str ptr) msvcrt._stat64i32 @ cdecl _statusfp() msvcrt._statusfp @ cdecl -arch=i386 _statusfp2(ptr ptr) msvcrt._statusfp2 @ cdecl _strcoll_l(str str ptr) msvcrt._strcoll_l @@ -1101,7 +1101,7 @@ @ stub _vscprintf_p_l @ cdecl _vscwprintf(wstr ptr) msvcrt._vscwprintf @ cdecl _vscwprintf_l(wstr ptr ptr) msvcrt._vscwprintf_l -@ cdecl _vscwprintf_p(wstr ptr) msvcr100._vscwprintf_p +@ cdecl _vscwprintf_p(wstr ptr) msvcrt._vscwprintf_p @ cdecl _vscwprintf_p_l(wstr ptr ptr) msvcrt._vscwprintf_p_l @ cdecl _vsnprintf(ptr long str ptr) msvcrt._vsnprintf @ cdecl _vsnprintf_c(ptr long str ptr) msvcrt._vsnprintf_c @@ -1121,7 +1121,7 @@ @ cdecl _vswprintf_c(ptr long wstr ptr) msvcrt._vswprintf_c @ cdecl _vswprintf_c_l(ptr long wstr ptr ptr) msvcrt._vswprintf_c_l @ cdecl _vswprintf_l(ptr wstr ptr ptr) msvcrt._vswprintf_l -@ cdecl _vswprintf_p(ptr long wstr ptr) msvcr100._vswprintf_p +@ cdecl _vswprintf_p(ptr long wstr ptr) msvcrt._vswprintf_p @ cdecl _vswprintf_p_l(ptr long wstr ptr ptr) msvcrt._vswprintf_p_l @ cdecl _vswprintf_s_l(ptr long wstr ptr ptr) msvcrt._vswprintf_s_l @ stub _vwprintf_l @@ -1248,10 +1248,10 @@ @ cdecl _wspawnvpe(long wstr ptr ptr) msvcrt._wspawnvpe @ cdecl _wsplitpath(wstr ptr ptr ptr ptr) msvcrt._wsplitpath @ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) msvcrt._wsplitpath_s -@ cdecl _wstat32(wstr ptr) msvcr100._wstat32 -@ cdecl _wstat32i64(wstr ptr) msvcr100._wstat32i64 +@ cdecl _wstat32(wstr ptr) msvcrt._wstat32 +@ cdecl _wstat32i64(wstr ptr) msvcrt._wstat32i64 @ cdecl _wstat64(wstr ptr) msvcrt._wstat64 -@ cdecl _wstat64i32(wstr ptr) msvcr100._wstat64i32 +@ cdecl _wstat64i32(wstr ptr) msvcrt._wstat64i32 @ cdecl _wstrdate(ptr) msvcrt._wstrdate @ cdecl _wstrdate_s(ptr long) msvcrt._wstrdate_s @ cdecl _wstrtime(ptr) msvcrt._wstrtime @@ -1288,7 +1288,7 @@ @ cdecl -arch=arm,x86_64 atanf(float) msvcrt.atanf @ cdecl atexit(ptr) msvcrt.atexit @ cdecl atof(str) msvcrt.atof -@ cdecl atoi(str) msvcr100.atoi ##don't forward to msvcrt +@ cdecl atoi(str) msvcrt.MSVCR100_atoi @ cdecl atol(str) msvcrt.atol @ cdecl bsearch(ptr ptr long long ptr) msvcrt.bsearch @ cdecl bsearch_s(ptr ptr long long ptr ptr) msvcrt.bsearch_s diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c index bc023d5..cffcdd7 100644 --- a/dlls/msvcrt/cpp.c +++ b/dlls/msvcrt/cpp.c @@ -35,6 +35,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); +struct __type_info_node +{ + void *memPtr; + struct __type_info_node* next; +}; + typedef exception bad_cast; typedef exception bad_typeid; typedef exception __non_rtti_object; @@ -1169,3 +1175,48 @@ int __cdecl _is_exception_typeof(const type_info *ti, EXCEPTION_POINTERS *ep) return ret; } #endif + +/********************************************************************* + * __clean_type_info_names_internal (MSVCR100.@) + */ +void CDECL __clean_type_info_names_internal(void *p) +{ + FIXME("(%p) stub\n", p); +} + +/********************************************************************* + * ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z (MSVCR100.@) + */ +DEFINE_THISCALL_WRAPPER(type_info_name_internal_method,8) +const char * __thiscall type_info_name_internal_method(type_info * _this, struct __type_info_node *node) +{ + static int once; + + if (node && !once++) FIXME("type_info_node parameter ignored\n"); + + if (!_this->name) + { + /* Create and set the demangled name */ + /* Note: mangled name in type_info struct always starts with a '.', while + * it isn't valid for mangled name. + * Is this '.' really part of the mangled name, or has it some other meaning ? + */ + char* name = __unDName(0, _this->mangled + 1, 0, MSVCRT_malloc, MSVCRT_free, 0x2800); + if (name) + { + unsigned int len = strlen(name); + + /* It seems _unDName may leave blanks at the end of the demangled name */ + while (len && name[--len] == ' ') + name[len] = '\0'; + + if (InterlockedCompareExchangePointer((void**)&_this->name, name, NULL)) + { + /* Another thread set this member since we checked above - use it */ + MSVCRT_free(name); + } + } + } + TRACE("(%p) returning %s\n", _this, _this->name); + return _this->name; +} diff --git a/dlls/msvcrt/errno.c b/dlls/msvcrt/errno.c index fe0a8d0..22a5f48 100644 --- a/dlls/msvcrt/errno.c +++ b/dlls/msvcrt/errno.c @@ -189,6 +189,22 @@ void msvcrt_set_errno(int err) } /********************************************************************* + * __sys_nerr (MSVCR100.@) + */ +int* CDECL __sys_nerr(void) +{ + return (int*)&MSVCRT__sys_nerr; +} + +/********************************************************************* + * __sys_errlist (MSVCR100.@) + */ +char** CDECL __sys_errlist(void) +{ + return MSVCRT__sys_errlist; +} + +/********************************************************************* * _errno (MSVCRT.@) */ int* CDECL MSVCRT__errno(void) @@ -425,6 +441,14 @@ void __cdecl MSVCRT__invalid_parameter(const MSVCRT_wchar_t *expr, const MSVCRT_ } } +/********************************************************************* + * _invalid_parameter_noinfo (MSVCR100.@) + */ +void CDECL _invalid_parameter_noinfo(void) +{ + MSVCRT__invalid_parameter( NULL, NULL, NULL, 0, 0 ); +} + /* _get_invalid_parameter_handler - not exported in native msvcrt, added in msvcr80 */ MSVCRT_invalid_parameter_handler CDECL _get_invalid_parameter_handler(void) { diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 44629e2..0acf828 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -208,6 +208,21 @@ static void msvcrt_stat64_to_stat64i32(const struct MSVCRT__stat64 *buf64, struc buf->st_ctime = buf64->st_ctime; } +static void msvcrt_stat64_to_stat32i64(const struct MSVCRT__stat64 *buf64, struct MSVCRT__stat32i64 *buf) +{ + buf->st_dev = buf64->st_dev; + buf->st_ino = buf64->st_ino; + buf->st_mode = buf64->st_mode; + buf->st_nlink = buf64->st_nlink; + buf->st_uid = buf64->st_uid; + buf->st_gid = buf64->st_gid; + buf->st_rdev = buf64->st_rdev; + buf->st_size = buf64->st_size; + buf->st_atime = buf64->st_atime; + buf->st_mtime = buf64->st_mtime; + buf->st_ctime = buf64->st_ctime; +} + static void time_to_filetime( MSVCRT___time64_t time, FILETIME *ft ) { /* 1601 to 1970 is 369 years plus 89 leap days */ @@ -2781,7 +2796,8 @@ int CDECL MSVCRT_stati64(const char* path, struct MSVCRT__stati64 * buf) * _stat (MSVCRT.@) */ int CDECL MSVCRT_stat(const char* path, struct MSVCRT__stat * buf) -{ int ret; +{ + int ret; struct MSVCRT__stat64 buf64; ret = MSVCRT_stat64( path, &buf64); @@ -2791,6 +2807,48 @@ int CDECL MSVCRT_stat(const char* path, struct MSVCRT__stat * buf) } /********************************************************************* + * _stat32 (MSVCR100.@) + */ +int CDECL _stat32(const char *path, struct MSVCRT__stat32 *buf) +{ + int ret; + struct MSVCRT__stat64 buf64; + + ret = MSVCRT_stat64(path, &buf64); + if (!ret) + msvcrt_stat64_to_stat32(&buf64, buf); + return ret; +} + +/********************************************************************* + * _stat32i64 (MSVCR100.@) + */ +int CDECL _stat32i64(const char *path, struct MSVCRT__stat32i64 *buf) +{ + int ret; + struct MSVCRT__stat64 buf64; + + ret = MSVCRT_stat64(path, &buf64); + if (!ret) + msvcrt_stat64_to_stat32i64(&buf64, buf); + return ret; +} + +/********************************************************************* + * _stat64i32 (MSVCR100.@) + */ +int CDECL _stat64i32(const char* path, struct MSVCRT__stat64i32 *buf) +{ + int ret; + struct MSVCRT__stat64 buf64; + + ret = MSVCRT_stat64(path, &buf64); + if (!ret) + msvcrt_stat64_to_stat64i32(&buf64, buf); + return ret; +} + +/********************************************************************* * _wstat64 (MSVCRT.@) */ int CDECL MSVCRT__wstat64(const MSVCRT_wchar_t* path, struct MSVCRT__stat64 * buf) @@ -2888,6 +2946,48 @@ int CDECL MSVCRT__wstat(const MSVCRT_wchar_t* path, struct MSVCRT__stat * buf) } /********************************************************************* + * _wstat32 (MSVCR100.@) + */ +int CDECL _wstat32(const MSVCRT_wchar_t *path, struct MSVCRT__stat32 *buf) +{ + int ret; + struct MSVCRT__stat64 buf64; + + ret = MSVCRT__wstat64(path, &buf64); + if (!ret) + msvcrt_stat64_to_stat32(&buf64, buf); + return ret; +} + +/********************************************************************* + * _wstat32i64 (MSVCR100.@) + */ +int CDECL _wstat32i64(const MSVCRT_wchar_t *path, struct MSVCRT__stat32i64 *buf) +{ + int ret; + struct MSVCRT__stat64 buf64; + + ret = MSVCRT__wstat64(path, &buf64); + if (!ret) + msvcrt_stat64_to_stat32i64(&buf64, buf); + return ret; +} + +/********************************************************************* + * _wstat64i32 (MSVCR100.@) + */ +int CDECL _wstat64i32(const MSVCRT_wchar_t *path, struct MSVCRT__stat64i32 *buf) +{ + int ret; + struct MSVCRT__stat64 buf64; + + ret = MSVCRT__wstat64(path, &buf64); + if (!ret) + msvcrt_stat64_to_stat64i32(&buf64, buf); + return ret; +} + +/********************************************************************* * _tell (MSVCRT.@) */ MSVCRT_long CDECL MSVCRT__tell(int fd) diff --git a/dlls/msvcrt/heap.c b/dlls/msvcrt/heap.c index bd914a7..37b5b59 100644 --- a/dlls/msvcrt/heap.c +++ b/dlls/msvcrt/heap.c @@ -289,6 +289,22 @@ MSVCRT_size_t CDECL _msize(void* mem) } /********************************************************************* + * _aligned_msize (MSVCR100.@) + */ +size_t CDECL _aligned_msize(void *p, MSVCRT_size_t alignment, MSVCRT_size_t offset) +{ + void **alloc_ptr; + + if(!MSVCRT_CHECK_PMT(p)) return -1; + + if(alignment < sizeof(void*)) + alignment = sizeof(void*); + + alloc_ptr = SAVED_PTR(p); + return _msize(*alloc_ptr)-alignment-sizeof(void*); +} + +/********************************************************************* * calloc (MSVCRT.@) */ void* CDECL MSVCRT_calloc(MSVCRT_size_t size, MSVCRT_size_t count) @@ -327,6 +343,31 @@ void* CDECL MSVCRT_realloc(void* ptr, MSVCRT_size_t size) } /********************************************************************* + * _recalloc (MSVCR100.@) + */ +void* CDECL _recalloc(void *mem, MSVCRT_size_t num, MSVCRT_size_t size) +{ + MSVCRT_size_t old_size; + void *ret; + + if(!mem) + return MSVCRT_calloc(num, size); + + size = num*size; + old_size = _msize(mem); + + ret = MSVCRT_realloc(mem, size); + if(!ret) { + *MSVCRT__errno() = MSVCRT_ENOMEM; + return NULL; + } + + if(size>old_size) + memset((BYTE*)ret+old_size, 0, size-old_size); + return ret; +} + +/********************************************************************* * __p__amblksiz (MSVCRT.@) */ unsigned int* CDECL __p__amblksiz(void) @@ -563,6 +604,29 @@ int CDECL memmove_s(void *dest, MSVCRT_size_t numberOfElements, const void *src, } /********************************************************************* + * wmemmove_s (MSVCR100.@) + */ +int CDECL wmemmove_s(MSVCRT_wchar_t *dest, MSVCRT_size_t numberOfElements, + const MSVCRT_wchar_t *src, MSVCRT_size_t count) +{ + TRACE("(%p %lu %p %lu)\n", dest, numberOfElements, src, count); + + if (!count) + return 0; + + /* Native does not seem to conform to 6.7.1.2.3 in + * http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1225.pdf + * in that it does not zero the output buffer on constraint violation. + */ + if (!MSVCRT_CHECK_PMT(dest != NULL)) return MSVCRT_EINVAL; + if (!MSVCRT_CHECK_PMT(src != NULL)) return MSVCRT_EINVAL; + if (!MSVCRT_CHECK_PMT_ERR(count <= numberOfElements, MSVCRT_ERANGE)) return MSVCRT_ERANGE; + + memmove(dest, src, sizeof(MSVCRT_wchar_t)*count); + return 0; +} + +/********************************************************************* * memcpy_s (MSVCRT.@) */ int CDECL memcpy_s(void *dest, MSVCRT_size_t numberOfElements, const void *src, MSVCRT_size_t count) @@ -589,6 +653,32 @@ int CDECL memcpy_s(void *dest, MSVCRT_size_t numberOfElements, const void *src, } /********************************************************************* + * wmemcpy_s (MSVCR100.@) + */ +int CDECL wmemcpy_s(MSVCRT_wchar_t *dest, MSVCRT_size_t numberOfElements, + const MSVCRT_wchar_t *src, MSVCRT_size_t count) +{ + TRACE("(%p %lu %p %lu)\n", dest, numberOfElements, src, count); + + if (!count) + return 0; + + if (!MSVCRT_CHECK_PMT(dest != NULL)) return MSVCRT_EINVAL; + + if (!MSVCRT_CHECK_PMT(src != NULL)) { + memset(dest, 0, numberOfElements*sizeof(MSVCRT_wchar_t)); + return MSVCRT_EINVAL; + } + if (!MSVCRT_CHECK_PMT_ERR(count <= numberOfElements, MSVCRT_ERANGE)) { + memset(dest, 0, numberOfElements*sizeof(MSVCRT_wchar_t)); + return MSVCRT_ERANGE; + } + + memcpy(dest, src, sizeof(MSVCRT_wchar_t)*count); + return 0; +} + +/********************************************************************* * strncpy_s (MSVCRT.@) */ int CDECL strncpy_s(char *dest, MSVCRT_size_t numberOfElements, diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index e7eaf5e..512f59a 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1157,6 +1157,11 @@ unsigned char* CDECL _mbstok(unsigned char *str, const unsigned char *delim) return _mbstok_s_l(str, delim, &data->mbstok_next, NULL); } +unsigned char* CDECL MSVCR100__mbstok(unsigned char *str, const unsigned char *delim) +{ + return _mbstok_l(str, delim, NULL); +} + /********************************************************************* * _mbbtombc(MSVCRT.@) */ diff --git a/dlls/msvcrt/misc.c b/dlls/msvcrt/misc.c index 069f733..3ba3b5e 100644 --- a/dlls/msvcrt/misc.c +++ b/dlls/msvcrt/misc.c @@ -334,3 +334,72 @@ int CDECL MSVCRT__resetstkoflw(void) /* causes stack fault that updates NtCurrentTeb()->Tib.StackLimit */ return VirtualProtect( &stack_addr, 1, PAGE_GUARD|PAGE_READWRITE, NULL ); } + +/********************************************************************* + * _decode_pointer (MSVCR90.@) + */ +void * CDECL MSVCRT_decode_pointer(void * ptr) +{ + return DecodePointer(ptr); +} + +/********************************************************************* + * _encode_pointer (MSVCR90.@) + */ +void * CDECL MSVCRT_encode_pointer(void * ptr) +{ + return EncodePointer(ptr); +} + +/********************************************************************* + * _encoded_null (MSVCR100.@) + */ +void * CDECL _encoded_null(void) +{ + TRACE("\n"); + + return EncodePointer(NULL); +} + +/********************************************************************* + * _CRT_RTC_INIT (MSVCR100.@) + */ +void* CDECL _CRT_RTC_INIT(void *unk1, void *unk2, int unk3, int unk4, int unk5) +{ + TRACE("%p %p %x %x %x\n", unk1, unk2, unk3, unk4, unk5); + return NULL; +} + +/********************************************************************* + * _CRT_RTC_INITW (MSVCR100.@) + */ +void* CDECL _CRT_RTC_INITW(void *unk1, void *unk2, int unk3, int unk4, int unk5) +{ + TRACE("%p %p %x %x %x\n", unk1, unk2, unk3, unk4, unk5); + return NULL; +} + +/********************************************************************* + * _byteswap_ushort (MSVCR100.@) + */ +unsigned short CDECL _byteswap_ushort(unsigned short s) +{ + return (s<<8) + (s>>8); +} + +/********************************************************************* + * _byteswap_ulong (MSVCR100.@) + */ +ULONG CDECL _byteswap_ulong(ULONG l) +{ + return (l<<24) + ((l<<8)&0xFF0000) + ((l>>8)&0xFF00) + (l>>24); +} + +/********************************************************************* + * _byteswap_uint64 (MSVCR100.@) + */ +unsigned __int64 CDECL _byteswap_uint64(unsigned __int64 i) +{ + return (i<<56) + ((i&0xFF00)<<40) + ((i&0xFF0000)<<24) + ((i&0xFF000000)<<8) + + ((i>>8)&0xFF000000) + ((i>>24)&0xFF0000) + ((i>>40)&0xFF00) + (i>>56); +} diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index fa458a4..4692796 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1539,3 +1539,34 @@ @ cdecl _fstat64i32(long ptr) @ cdecl _is_exception_typeof(ptr ptr) @ cdecl -arch=i386 __libm_sse2_sqrt_precise() +@ cdecl wmemmove_s(ptr long ptr long) +@ cdecl wmemcpy_s(ptr long ptr long) +@ cdecl _encoded_null() +@ cdecl _invalid_parameter_noinfo() +@ cdecl __sys_nerr() +@ cdecl __sys_errlist() +@ cdecl __clean_type_info_names_internal(ptr) +@ cdecl _recalloc(ptr long long) +@ cdecl _stat32(str ptr) +@ cdecl _stat32i64(str ptr) +@ cdecl _stat64i32(str ptr) +@ cdecl _wstat32(wstr ptr) +@ cdecl _wstat32i64(wstr ptr) +@ cdecl _wstat64i32(wstr ptr) +@ cdecl _atoflt(ptr str) +@ cdecl -arch=arm ?_name_internal_method@type_info@@QBAPBDPAU__type_info_node@@@Z(ptr ptr) type_info_name_internal_method +@ thiscall -arch=i386 ?_name_internal_method@type_info@@QBEPBDPAU__type_info_node@@@Z(ptr ptr) type_info_name_internal_method +@ cdecl -arch=win64 ?_name_internal_method@type_info@@QEBAPEBDPEAU__type_info_node@@@Z(ptr ptr) type_info_name_internal_method +@ cdecl _CRT_RTC_INIT(ptr ptr long long long) +@ cdecl _CRT_RTC_INITW(ptr ptr long long long) +@ cdecl _byteswap_uint64(int64) +@ cdecl _byteswap_ulong(long) +@ cdecl _byteswap_ushort(long) +@ cdecl _aligned_msize(ptr long long) +@ cdecl _get_daylight(ptr) +@ cdecl _get_timezone(ptr) +@ varargs _sprintf_p(ptr long str) +@ cdecl _vscwprintf_p(wstr ptr) +@ cdecl _vswprintf_p(ptr long wstr ptr) +@ cdecl MSVCR100_atoi(str) +@ cdecl MSVCR100__mbstok(str str) diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c index 446c119..be6283e 100644 --- a/dlls/msvcrt/string.c +++ b/dlls/msvcrt/string.c @@ -455,6 +455,14 @@ int CDECL MSVCRT__atoflt_l( MSVCRT__CRT_FLOAT *value, char *str, MSVCRT__locale_ } /********************************************************************* + * _atoflt (MSVCR100.@) + */ +int CDECL _atoflt(MSVCRT__CRT_FLOAT *value, char *str) +{ + return MSVCRT__atoflt_l(value, str, NULL); +} + +/********************************************************************* * _atodbl_l (MSVCRT.@) */ int CDECL MSVCRT__atodbl_l(MSVCRT__CRT_DOUBLE *value, char *str, MSVCRT__locale_t locale) @@ -879,6 +887,11 @@ int __cdecl MSVCRT_atoi(const char *str) return minus ? -ret : ret; } +int CDECL MSVCR100_atoi(const char *str) +{ + return MSVCRT__atoi_l(str, NULL); +} + /****************************************************************** * strtol (MSVCRT.@) */ diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c index 2b5fe8d..a6d4691 100644 --- a/dlls/msvcrt/time.c +++ b/dlls/msvcrt/time.c @@ -1467,3 +1467,25 @@ MSVCRT_wchar_t * CDECL MSVCRT__wctime(const MSVCRT___time32_t *time) return MSVCRT__wctime32( time ); } #endif + +/********************************************************************* + * _get_timezone (MSVCR100.@) + */ +int CDECL _get_timezone(LONG *timezone) +{ + if(!MSVCRT_CHECK_PMT(timezone != NULL)) return MSVCRT_EINVAL; + + *timezone = MSVCRT___timezone; + return 0; +} + +/********************************************************************* + * _get_daylight (MSVCR100.@) + */ +int CDECL _get_daylight(int *hours) +{ + if(!MSVCRT_CHECK_PMT(hours != NULL)) return MSVCRT_EINVAL; + + *hours = MSVCRT___daylight; + return 0; +} diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index 1b00b41..a731d16 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -860,6 +860,15 @@ int CDECL MSVCRT_vswprintf_p_l(MSVCRT_wchar_t *buffer, MSVCRT_size_t length, } /********************************************************************* + * _vswprintf_p (MSVCR100.@) + */ +int CDECL _vswprintf_p(MSVCRT_wchar_t *buffer, MSVCRT_size_t length, + const MSVCRT_wchar_t *format, __ms_va_list args) +{ + return MSVCRT_vswprintf_p_l(buffer, length, format, NULL, args); +} + +/********************************************************************* * _vsnwprintf_s_l (MSVCRT.@) */ int CDECL MSVCRT_vsnwprintf_s_l( MSVCRT_wchar_t *str, MSVCRT_size_t sizeOfBuffer, @@ -1088,6 +1097,14 @@ int CDECL MSVCRT__vscwprintf_p_l( const MSVCRT_wchar_t *format, MSVCRT__locale_t } /********************************************************************* + * _vscwprintf_p (MSVCR100.@) + */ +int CDECL _vscwprintf_p(const MSVCRT_wchar_t *format, __ms_va_list args) +{ + return MSVCRT_vswprintf_p_l(NULL, INT_MAX, format, NULL, args); +} + +/********************************************************************* * vswprintf_s (MSVCRT.@) */ int CDECL MSVCRT_vswprintf_s(MSVCRT_wchar_t* str, MSVCRT_size_t numberOfElements, @@ -1161,6 +1178,21 @@ int CDECL MSVCRT_sprintf_p_l(char *buffer, MSVCRT_size_t length, } /********************************************************************* + * _sprintf_p (MSVCR100.@) + */ +int CDECL _sprintf_p(char *buffer, MSVCRT_size_t length, const char *format, ...) +{ + __ms_va_list valist; + int r; + + __ms_va_start(valist, format); + r = MSVCRT_vsprintf_p_l(buffer, length, format, NULL, valist); + __ms_va_end(valist); + + return r; +} + +/********************************************************************* * _swprintf_p_l (MSVCRT.@) */ int CDECL MSVCRT_swprintf_p_l(MSVCRT_wchar_t *buffer, MSVCRT_size_t length,