int LOG_CONTEXT_PROPERTY_TYPE_INIT()

in v2/src/log_context_property_type_wchar_t_ptr.c [80:118]


int LOG_CONTEXT_PROPERTY_TYPE_INIT(wchar_t_ptr)(void* dst_value, size_t count, const wchar_t* format, ...)
{
    int result;

    if (
        /* Codes_SRS_LOG_CONTEXT_PROPERTY_TYPE_WCHAR_T_PTR_07_013: [ If dst_value is NULL, LOG_CONTEXT_PROPERTY_TYPE_INIT(wchar_t_ptr) shall fail and return a non-zero value. ]*/
        (dst_value == NULL) ||
        /* Codes_SRS_LOG_CONTEXT_PROPERTY_TYPE_WCHAR_T_PTR_07_014: [ If format is NULL, LOG_CONTEXT_PROPERTY_TYPE_INIT(wchar_t_ptr) shall fail and return a non-zero value. ]*/
        (format == NULL)
        )
    {
        (void)printf("Invalid arguments: void* dst_value=%p, const wchar_t* format=%ls\r\n",
            dst_value, MU_WP_OR_NULL(format));
        result = MU_FAILURE;
    }
    else
    {
        va_list args;
        va_start(args, format);

        /* Codes_SRS_LOG_CONTEXT_PROPERTY_TYPE_WCHAR_T_PTR_07_015: [ LOG_CONTEXT_PROPERTY_TYPE_INIT(wchar_t_ptr) shall initialize by calling vswprintf the memory at dst_value with the wprintf style formatted wchar_t string given by format and the arguments in .... ]*/
        int vswprintf_result = vswprintf(dst_value, count, format, args);

        if (vswprintf_result < 0)
        {
        /* Codes_SRS_LOG_CONTEXT_PROPERTY_TYPE_WCHAR_T_PTR_07_017: [ If formatting the string fails, LOG_CONTEXT_PROPERTY_TYPE_INIT(wchar_t_ptr) shall fail and return a non-zero value. ]*/
            result = MU_FAILURE;
        }
        else
        {
            /* Codes_SRS_LOG_CONTEXT_PROPERTY_TYPE_WCHAR_T_PTR_07_016: [ LOG_CONTEXT_PROPERTY_TYPE_INIT(wchar_t_ptr) shall succeed and return 0. ]*/
            result = 0;
        }

        va_end(args);
    }

    return result;
}