Hi Eli,

> From: Eli Zaretskii [mailto:e...@gnu.org]
> Sent: 2017年11月4日 16:53
>
> What do you mean by "gnu printf related functions"?  If this is a build
that
> doesn't define ENABLE_NLS, then wget outputs the original text using the
MS
> runtime versions of printf.  And in a build that does define ENABLE_NLS,
the
> text is additionally processed by the GNU gettext library.  So is the
problem
> with the build which defines ENABLE_NLS or the build that didn't define
> ENABLE_NLS?  Or is it with both?

I'm not sure whether you did any tests. And I can't tell what's the result
with 'ENABLE_NLS', I don't have gnu gettext, resulting 'ENABLE_NLS'
undefined.
The logics I know of the code is that some 'logprintf' are used before
'log_int', and some are used after that. And the logic of how 'logprintf'
works is as the attached screenshot 'log_vprintf_internal_logics' shows. A
little different as you say. They don't work through the same printing
function!
The gnulib one needs setting codepage to multibyte codepage, if it is not
for single byte, as I said before. (Maybe you can dig out why.)

>> '_getmbcp' is used
> Maybe the problem is that the codepage used for the console output is
> different from the system's ANSI codepage?  What does GetConsoleOutputCP
> return in the case you describe?
>
> What happens if ENABLE_NLS is defined?  Your patch only handles the
> situation where ENABLE_NLS is NOT defined.

Yes, my patch only handles the situation I meet with, by using necessary
predefined conditions. I leave the others untouched, because I don't have
the needed libraries.
I hope others who has the environments can test it and turn on the switches
when necessary.

And I can tell you that 'GetConsoleOutputCP' returns the codepage as command
'chcp'. It is right. The gnu 'vsnprintf' doesn't work right with 'setlocale'
omitted.


Best Regards,
YX Hao

Reply via email to