diff --git a/reactos/dll/win32/msvcrt/msvcrt.def b/reactos/dll/win32/msvcrt/msvcrt.def index ca19192a554..563f5d9a4ac 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.def +++ b/reactos/dll/win32/msvcrt/msvcrt.def @@ -852,5 +852,6 @@ EXPORTS _ftol2=_ftol _ftol2_sse=_ftol strcat_s + strcpy_s _swprintf=swprintf diff --git a/reactos/lib/sdk/crt/string/string.c b/reactos/lib/sdk/crt/string/string.c index eaacbe5221b..3b4bdf07d54 100644 --- a/reactos/lib/sdk/crt/string/string.c +++ b/reactos/lib/sdk/crt/string/string.c @@ -62,3 +62,26 @@ int CDECL strcat_s( char* dst, size_t elem, const char* src ) dst[0] = '\0'; return ERANGE; } + +/********************************************************************* + * strcpy_s (MSVCRT.@) + */ +int CDECL strcpy_s( char* dst, size_t elem, const char* src ) +{ + size_t i; + if(!elem) return EINVAL; + if(!dst) return EINVAL; + if(!src) + { + dst[0] = '\0'; + return EINVAL; + } + + for(i = 0; i < elem; i++) + { + if((dst[i] = src[i]) == '\0') return 0; + } + dst[0] = '\0'; + return ERANGE; +} +