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