Commit Graph

183 Commits

Author SHA1 Message Date
Martin Storsjo b9d0f5d562 ucrtbase: Implement the new printf corner case behaviour.
Check the option flags whether the new or old legacy behaviours are
wanted.

For _MSVCR_VER < 140, don't check the option flags but hardcode them to
TRUE. (This avoids having to manually add all three flags into every
caller of pf_printf.) Mask out any other flags, to avoid other
out-of-range flags to be interpreted as the other flags (positional
params, invoke invalid param handler).

Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:19:12 +09:00
Martin Storsjo 1c8412d9e5 msvcrt: Refactor pf_printf to take options as flags instead of as BOOL parameter.
Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:18:56 +09:00
Martin Storsjo b09aadd202 ucrtbase: Handle the swprintf style termination and return values.
When neither the "legacy vsprintf null termination" nor the "standard
snprintf behaviour" flags are specified, the functions return -2 when
the output string didn't fit (similar to old style msvcrt _snprintf that
returned -1), but they are null terminated (similar to the C99 snprintf
style behaviour). This is the same way as the C99 swprintf function
behaves.

Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 19:18:42 +09:00
Martin Storsjo fcf9ec8080 ucrtbase: Add defines for the printf/scanf options constants.
Avoid using hardcoded magic numbers for these options.

Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-02 23:02:24 +09:00
Martin Storsjo 2a74c9a8ed ucrtbase: Fix the function name in a comment.
Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-02 23:02:23 +09:00
Martin Storsjo 255a7fe067 ucrtbase: Implement some printf functions.
Not all functions are implemented (yet not all variants are
implemented in the normal msvcrt either).

The new functions are more generalized and are C99 compliant.
They take an options parameter that e.g. for the snprintf
family of functions indicate whether the truncation and return
value should be handled as before or in the standards compliant
way.

Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-28 22:31:24 +09:00
Daniel Lehman 65b8a3da47 msvcrt: Add __swprintf_l. 2015-06-01 14:43:54 +09:00
Orion Poplawski 8bf1732962 msvcrt: Bump MSVCRT_MB_LEN_MAX to 5 and use it in MSVCRT__wctomb_l for default buffer lengthSet MB_LEN_MAX to 5 to match MSVCRT_MB_LEN_MAX. 2015-02-03 14:38:40 +09:00
Piotr Caban ccaf87b2ea msvcrt: Add _iswpunct_l implementation. 2015-01-26 11:23:12 +01:00
Piotr Caban ef69ad9f97 msvcrt: Add _iswspace_l implementation. 2015-01-26 11:23:08 +01:00
Piotr Caban bd1428ef50 msvcrt: Add _vscprintf_p implementation. 2015-01-20 16:08:49 +01:00
Piotr Caban 3af24fe1f4 msvcrt: Add _wcsset_s implementation. 2014-12-23 18:59:36 +01:00
Hans Leidekker ed79b3f9a5 msvcrt: Implement _snprintf_l. 2014-10-31 10:49:06 +09:00
Vincent Povirk 1860efaa9e msvcrt: Implement _wcsnicmp_l. 2014-10-29 20:31:04 +09:00
Piotr Caban b540277cc7 msvcrt: Add _wcsxfrm_l implementation. 2014-06-12 18:25:27 +02:00
Piotr Caban 28830b4b36 msvcrt: Return string in _wcslwr and _wcslwr_l. 2014-06-11 13:02:52 +02:00
Piotr Caban 31c76cae7c msvcrt: Add _wcslwr_s_l implementation. 2014-05-24 11:01:28 +09:00
Piotr Caban 277eb98739 msvcrt: Add _wcsupr_l implementation. 2014-04-29 16:07:44 +02:00
Alexandre Julliard 0c496f0280 msvcrt: Update comments for non-exported functions. 2014-04-21 14:32:40 +02:00
Piotr Caban beeea28a53 msvcr100: Move functions implementation to msvcrt. 2014-04-16 18:00:15 +02:00
Piotr Caban e70bf5f8c6 msvcrt: Fix compilation errors on Mingw. 2014-04-16 18:00:01 +02:00
Piotr Caban 965d3acc6d msvcrt: Fix wcs*coll functions behavior in C locale. 2014-01-27 14:13:27 +01:00
Alexandre Bique 33199860f1 msvcrt: Implement missing sprintf functions. 2013-12-10 13:01:22 +01:00
Alexandre Bique 09bfea117d msvcrt: Implement _vsprintf_l. 2013-12-10 13:01:22 +01:00
Frédéric Delanoy 508365a2c1 msvcrt: Use BOOL type where appropriate. 2013-10-31 09:58:43 +01:00
Piotr Caban 26721c25f6 msvcrt: Don't forward wcsncmp to ntdll. 2013-10-01 13:10:21 +02:00
Piotr Caban 3868bf06b2 msvcrt: Add _wtoi64_l implementation. 2013-10-01 13:10:21 +02:00
Piotr Caban b50833389e msvcrt: Improve error handling in wcsrtombs function. 2013-09-24 18:54:37 +02:00
Piotr Caban dadb2fdfa9 msvcrt: Add _snwprintf_s_l implementation. 2013-09-19 19:49:11 +02:00
Piotr Caban 1f1624612e msvcrt: Don't use CDECL calling convention in MSVCRT_wcsrtombs_l (internal function). 2013-09-18 13:11:10 +02:00
Piotr Caban 882761f15d msvcrt: Don't forward wcsstr to ntdll. 2013-09-17 16:25:54 +02:00
Piotr Caban a89f726355 msvcrt: Don't forward wcslen to ntdll. 2013-09-17 16:25:48 +02:00
Piotr Caban 300c012372 msvcrt: Don't forward wcschr to ntdll. 2013-09-17 16:25:43 +02:00
Piotr Caban 2734ae0786 msvcrt: Don't forward _wcsnicmp to ntdll. 2013-09-12 12:59:02 +02:00
Daniel Lehman a0d8d1e223 msvcrt: Invoke invalid_handler in _wcscpy_s. 2013-08-16 11:55:23 +02:00
Piotr Caban a51ffcd442 msvcrt: Added _swprintf_s_l implementation. 2013-08-01 16:28:39 +02:00
Piotr Caban 679542419a msvcrt: Add _wcstol_l implementation. 2013-07-29 15:00:26 +02:00
Piotr Caban 6457163bb2 msvcrt: Add _wctomb_s_l implementation. 2013-07-27 11:50:56 -05:00
Piotr Caban c66d94bfd9 msvcrt: Added _wcsicmp_l implementation. 2013-06-25 18:12:12 +02:00
Jactry Zeng 5af20ef180 msvcrt: Added _wcsnicoll_l implementation. 2013-04-01 14:41:03 +02:00
Jactry Zeng d2763e43d1 msvcrt: Added _wcsicoll_l implementation. 2013-04-01 14:40:49 +02:00
Jactry Zeng dafa7611e9 msvcrt: Added _wcscoll_l implementation. 2013-04-01 14:40:21 +02:00
Jactry Zeng 2f425fb832 msvcrt: Added _wcsncoll and _wcsncoll_l implementation. 2013-03-29 17:52:19 +01:00
Piotr Caban 12b8c9671e msvcrt: Update spec file with functions added in newer version of the dll. 2013-03-28 18:54:26 +01:00
Piotr Caban 8f9b0abf72 msvcrt: Added _wcstoul_l implementation. 2013-03-27 20:12:29 +01:00
Piotr Caban 9e32259457 msvcrt: Don't forward wcsncpy to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban 975801cceb msvcrt: Don't forward towupper and towlower to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban 06c6773844 msvcrt: Added _wtol_l implementation. 2013-03-27 20:12:29 +01:00
Piotr Caban 5c03a35f7a msvcrt: Don't forward _wtoi to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban 0ffc970aa4 msvcrt: Don't forward _wcsicmp to ntdll. 2013-03-27 20:12:29 +01:00