#undef vprintf
#undef vwprintf
+#ifdef _MSC_VER
+#pragma function(_wcsset)
+#endif
+
#ifndef _LIBCNT_
/*********************************************************************
* _wcsdup (MSVCRT.@)
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.@)
*/
/* pf_integer_conv: prints x to buf, including alternate formats and
additional precision digits, but not field characters or the sign */
-static void pf_integer_conv( char *buf, int buf_len, pf_flags *flags,
+static void pf_integer_conv( char *buf, unsigned int buf_len, pf_flags *flags,
LONGLONG x )
{
unsigned int base;
* Includes extra bytes: 1 byte for null, 1 byte for sign,
4 bytes for exponent, 2 bytes for alternate formats, 1 byte
for a decimal, and 1 byte for an additional float digit. */
- int x_len = ((flags.FieldLength > flags.Precision) ?
- flags.FieldLength : flags.Precision) + 10;
+ unsigned x_len = ((flags.FieldLength > flags.Precision) ?
+ flags.FieldLength : flags.Precision) + 10;
if( x_len >= sizeof number)
x = HeapAlloc( GetProcessHeap(), 0, x_len );
* Includes extra bytes: 1 byte for null, 1 byte for sign,
4 bytes for exponent, 2 bytes for alternate formats, 1 byte
for a decimal, and 1 byte for an additional float digit. */
- int x_len = ((flags.FieldLength > flags.Precision) ?
- flags.FieldLength : flags.Precision) + 10;
+ unsigned x_len = ((flags.FieldLength > flags.Precision) ?
+ flags.FieldLength : flags.Precision) + 10;
if( x_len >= sizeof number)
x = HeapAlloc( GetProcessHeap(), 0, x_len );
return isxdigitW( wc );
}
+#endif
+
/*********************************************************************
* wcscpy_s (MSVCRT.@)
*/
return ERANGE;
}
- if(size > numElement)
- size = numElement;
+ memcpy( wcDest, wcSrc, size*sizeof(WCHAR) );
+
+ return 0;
+}
+
+/******************************************************************
+ * wcsncpy_s (MSVCRT.@)
+ */
+INT CDECL wcsncpy_s( wchar_t* wcDest, size_t numElement, const wchar_t *wcSrc,
+ size_t count )
+{
+ size_t size = 0;
+
+ if (!wcDest || !numElement)
+ return EINVAL;
+
+ wcDest[0] = 0;
+
+ if (!wcSrc)
+ {
+ return EINVAL;
+ }
+
+ size = min(strlenW(wcSrc), count);
+
+ if (size >= numElement)
+ {
+ return ERANGE;
+ }
memcpy( wcDest, wcSrc, size*sizeof(WCHAR) );
+ wcDest[size] = '\0';
return 0;
}
-#endif
+
+