From 53869e19ebb0d74909b9efb81a54a4571b5460b8 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 2 Sep 2014 13:50:44 +0200 Subject: [PATCH] msvcrt: Add _strnset_s implementation. --- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrt/string.c | 24 ++++++++++++++++++++++++ dlls/msvcrt/tests/string.c | 33 +++++++++++++++++++++++++++++++++ 7 files changed, 62 insertions(+), 5 deletions(-) diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 71356382538..f8062f996de 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1350,7 +1350,7 @@ @ cdecl _strnicoll(str str long) MSVCRT__strnicoll @ cdecl _strnicoll_l(str str long ptr) MSVCRT__strnicoll_l @ cdecl _strnset(str long long) MSVCRT__strnset -@ stub _strnset_s +@ cdecl _strnset_s(str long long long) MSVCRT__strnset_s @ cdecl _strrev(str) MSVCRT__strrev @ cdecl _strset(str long) @ stub _strset_s diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 39ad0375aff..6a328eb7a3e 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1708,7 +1708,7 @@ @ cdecl _strnicoll(str str long) MSVCRT__strnicoll @ cdecl _strnicoll_l(str str long ptr) MSVCRT__strnicoll_l @ cdecl _strnset(str long long) MSVCRT__strnset -@ stub _strnset_s +@ cdecl _strnset_s(str long long long) MSVCRT__strnset_s @ cdecl _strrev(str) MSVCRT__strrev @ cdecl _strset(str long) @ stub _strset_s diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 302abe54237..3902c8544c6 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1030,7 +1030,7 @@ @ cdecl _strnicoll(str str long) MSVCRT__strnicoll @ cdecl _strnicoll_l(str str long ptr) MSVCRT__strnicoll_l @ cdecl _strnset(str long long) MSVCRT__strnset -@ stub _strnset_s +@ cdecl _strnset_s(str long long long) MSVCRT__strnset_s @ cdecl _strrev(str) MSVCRT__strrev @ cdecl _strset(str long) @ stub _strset_s diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 28d37d1447b..fa19f4063ea 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1005,7 +1005,7 @@ @ cdecl _strnicoll(str str long) MSVCRT__strnicoll @ cdecl _strnicoll_l(str str long ptr) MSVCRT__strnicoll_l @ cdecl _strnset(str long long) MSVCRT__strnset -@ stub _strnset_s +@ cdecl _strnset_s(str long long long) MSVCRT__strnset_s @ cdecl _strrev(str) MSVCRT__strrev @ cdecl _strset(str long) @ stub _strset_s diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 2349580246b..01788e1b0fe 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -971,7 +971,7 @@ @ cdecl _strnicoll(str str long) MSVCRT__strnicoll @ cdecl _strnicoll_l(str str long ptr) MSVCRT__strnicoll_l @ cdecl _strnset(str long long) MSVCRT__strnset -# stub _strnset_s(str long long long) +@ cdecl _strnset_s(str long long long) MSVCRT__strnset_s @ cdecl _strrev(str) MSVCRT__strrev @ cdecl _strset(str long) # stub _strset_s(str long long) diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c index 60e00c9124a..bacab00c9a6 100644 --- a/dlls/msvcrt/string.c +++ b/dlls/msvcrt/string.c @@ -173,6 +173,30 @@ char* CDECL MSVCRT__strupr(char *str) return str; } +/********************************************************************* + * _strnset_s (MSVCRT.@) + */ +int CDECL MSVCRT__strnset_s(char *str, MSVCRT_size_t size, int c, MSVCRT_size_t count) +{ + MSVCRT_size_t i; + + if(!str && !size && !count) return 0; + if(!MSVCRT_CHECK_PMT(str != NULL)) return MSVCRT_EINVAL; + if(!MSVCRT_CHECK_PMT(size > 0)) return MSVCRT_EINVAL; + + for(i=0; i