diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 986e3724a9f..f9eae912684 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1096,8 +1096,8 @@ @ stub _mblen_l @ cdecl _mbsbtype(str long) @ stub _mbsbtype_l -@ stub _mbscat_s -@ stub _mbscat_s_l +@ cdecl _mbscat_s(ptr long str) +@ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) @ stub _mbschr_l @ cdecl _mbscmp(str str) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 78131aa82eb..3faca079659 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1454,8 +1454,8 @@ @ stub _mblen_l @ cdecl _mbsbtype(str long) @ stub _mbsbtype_l -@ stub _mbscat_s -@ stub _mbscat_s_l +@ cdecl _mbscat_s(ptr long str) +@ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) @ stub _mbschr_l @ cdecl _mbscmp(str str) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 9fb8d932f03..5077a6722e3 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1462,8 +1462,8 @@ @ stub _mblen_l @ cdecl _mbsbtype(str long) @ stub _mbsbtype_l -@ stub _mbscat_s -@ stub _mbscat_s_l +@ cdecl _mbscat_s(ptr long str) +@ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) @ stub _mbschr_l @ cdecl _mbscmp(str str) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index ef24b911f37..fac24463789 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -769,8 +769,8 @@ @ stub _mblen_l @ cdecl _mbsbtype(str long) @ stub _mbsbtype_l -@ stub _mbscat_s -@ stub _mbscat_s_l +@ cdecl _mbscat_s(ptr long str) +@ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) @ stub _mbschr_l @ cdecl _mbscmp(str str) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index e58b8f964e6..479b88b00e5 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -746,8 +746,8 @@ @ stub _mblen_l @ cdecl _mbsbtype(str long) @ stub _mbsbtype_l -@ stub _mbscat_s -@ stub _mbscat_s_l +@ cdecl _mbscat_s(ptr long str) +@ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) @ stub _mbschr_l @ cdecl _mbscmp(str str) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 8c4bc02e98b..240ec2c4535 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1052,6 +1052,56 @@ unsigned char * CDECL _mbscat( unsigned char *dst, const unsigned char *src ) return dst; } +/********************************************************************* + * _mbscat_s_l (MSVCRT.@) + */ +int CDECL _mbscat_s_l( unsigned char *dst, MSVCRT_size_t size, + const unsigned char *src, MSVCRT__locale_t locale ) +{ + MSVCRT_size_t i, j; + int ret = 0; + + if(!MSVCRT_CHECK_PMT(dst != NULL)) return MSVCRT_EINVAL; + if(!MSVCRT_CHECK_PMT(src != NULL)) return MSVCRT_EINVAL; + + for(i=0; i