Hi Jeff,
On 11/22/19 1:28 AM, Jeff Smith wrote:
- BOOL time_data_from_param = (time_data) ? TRUE : FALSE;
time_data_from_param is not used if MSVCR_VER != 140. Also a quick testing shows that it's still not correct. Probably we should find a better way of recognizing lc_time_curr from C locale.
+#if _MSVCR_VER>=140
if(!strcmp(locinfo->lc_category[MSVCRT_LC_TIME].locale, "C") &&
!time_data_from_param && !alternate)
{
static const WCHAR date_format[] = { 'd','d','d',' ','M','M','M',' ','d','d',
' ','H','H',':','m','m',':','s','s',' ','y','y','y','y',0 };
MSVCRT_size_t day_offset = ret + 8;
if(!strftime_format(str, &ret, max, mstm, time_data, date_format))
return 0;
if(str[day_offset] == '0')
str[day_offset] = ' ';
Is it the same as calling following code? static const WCHAR date_format[] = {'a',' ','b',' ','e',' ','T',' ','Y'}; tmp = strftime_impl(str+ret, max-ret, date_format, mstm, time_data, loc); if (!tmp) goto einval_error; ret += tmp;
It will remove the need to manipulate the function output.
Thanks, Piotr