[CRT]
[reactos.git] / lib / sdk / crt / string / wcs.c
index 1a1f132..aca8147 100644 (file)
 #undef vprintf
 #undef vwprintf
 
+#ifdef _MSC_VER
+#pragma function(_wcsset)
+#endif
+
 #ifndef _LIBCNT_
 /*********************************************************************
  *             _wcsdup (MSVCRT.@)
@@ -109,6 +113,35 @@ wchar_t* CDECL _wcsset( wchar_t* str, wchar_t c )
   return ret;
 }
 
+/******************************************************************
+ *             _wcsupr_s (MSVCRT.@)
+ *
+ */
+INT CDECL _wcsupr_s( wchar_t* str, size_t n )
+{
+  wchar_t* ptr = str;
+
+  if (!str || !n)
+  {
+    if (str) *str = '\0';
+    __set_errno(EINVAL);
+    return EINVAL;
+  }
+
+  while (n--)
+  {
+    if (!*ptr) return 0;
+    *ptr = toupperW(*ptr);
+    ptr++;
+  }
+
+  /* MSDN claims that the function should return and set errno to
+   * ERANGE, which doesn't seem to be true based on the tests. */
+  *str = '\0';
+  __set_errno(EINVAL);
+  return EINVAL;
+}
+
 /*********************************************************************
  *             wcstod (MSVCRT.@)
  */
@@ -1132,9 +1165,6 @@ INT CDECL wcscpy_s( wchar_t* wcDest, size_t numElement, const  wchar_t *wcSrc)
         return ERANGE;
     }
 
-    if(size > numElement)
-        size = numElement;
-
     memcpy( wcDest, wcSrc, size*sizeof(WCHAR) );
 
     return 0;