safec 3.9
Safe C Library - ISO TR24731 Bounds Checking Interface
Loading...
Searching...
No Matches
vswprintf_s.c File Reference
#include "safe_str_lib.h"
+ Include dependency graph for vswprintf_s.c:

Macros

#define __STDC_WANT_LIB_EXT1__   1
 

Functions

int vswprintf_s (wchar_t *restrict dest, rsize_t dmax, const wchar_t *restrict fmt, va_list ap)
 The vswprintf_s function composes a wide string with same test that would be printed if format was used on wprintf.
 

Macro Definition Documentation

◆ __STDC_WANT_LIB_EXT1__

#define __STDC_WANT_LIB_EXT1__   1

Function Documentation

◆ vswprintf_s()

int vswprintf_s ( wchar_t *restrict dest,
rsize_t dmax,
const wchar_t *restrict fmt,
va_list ap )

The vswprintf_s function composes a wide string with same test that would be printed if format was used on wprintf.

Instead of being printed, the content is stored in dest. With SAFECLIB_STR_NULL_SLACK defined all elements following the terminating NUL character (if any) written by vswprintf_s in the array of dmax wide characters pointed to by dest are nulled when vswprintf_s returns.

Remarks
SPECIFIED IN
Parameters
[out]destpointer to wide string that will be written into.
[in]dmaxrestricted maximum length of dest
[in]fmtformat-control wide string.
[in]apoptional arguments
Precondition
Neither dest nor fmt shall be a null pointer.
dmax shall not be greater than RSIZE_MAX_WSTR.
dmax shall not equal zero.
dmax shall be greater than wcsnlen_s(dest, dmax).
fmt shall not contain the conversion specifier n
None of the arguments corresponding to s is a null pointer (not yet)
No encoding error shall occur.
Note
C11 uses RSIZE_MAX, not RSIZE_MAX_WSTR.
Returns
If no runtime-constraint violation occurred, the vswprintf_s function returns the number of wide characters written in the array, not counting the terminating null wide character. If an encoding error occurred or if n or more wide characters are requested to be written, vswprintf_s returns a negative value. If any other runtime-constraint violation occurred, vswprintf_s returns zero.
If the buffer dest is too small for the formatted text, including the terminating null, then the buffer is set to an empty string by placing a null wide character at dest[0], and the invalid parameter handler is invoked. Unlike vsnprintf, vswprintf_s guarantees that the buffer will be null-terminated unless the buffer size is zero.
Return values
>0on success
-ESNULLPwhen dest/fmt is NULL pointer
-ESZEROLwhen dmax = 0
-ESLEMAXwhen dmax > RSIZE_MAX_WSTR
-EOVERFLOWwhen dmax > size of dest
-ESNOSPCwhen return value exceeds dmax
-EINVALwhen fmt contains n
-1if an encoding error occurred or if n or more wide characters are requested to be written.
0on some other error
See also
sprintf_s(), vsnprintf_s(), swprintf_s()