Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Let's use the Win32 API more precisely #147

Closed
wants to merge 2 commits into from

Commits on May 20, 2019

  1. mingw: get pw_name in UTF-8 format

    Previously, we would have obtained the user name encoded in whatever the
    current code page is.
    
    Note: the "user name" here does not denote the full name but instead the
    short logon name.
    
    Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
    dscho committed May 20, 2019
    Configuration menu
    Copy the full SHA
    54fff4e View commit details
    Browse the repository at this point in the history

Commits on Jun 27, 2019

  1. mingw: use Unicode functions explicitly

    Many Win32 API functions actually exist in two variants: one with
    the `A` suffix that takes ANSI parameters (`char *` or `const char *`)
    and one with the `W` suffix that takes Unicode parameters (`wchar_t *`
    or `const wchar_t *`).
    
    The ANSI variant assumes that the strings are encoded according to
    whatever is the current locale. This is not what Git wants to use on
    Windows: we assume that `char *` variables point to strings encoded in
    UTF-8.
    
    There is a pseudo UTF-8 locale on Windows, but it does not work
    as one might expect. In addition, if we overrode the user's locale, that
    would modify the behavior of programs spawned by Git (such as editors,
    difftools, etc), therefore we cannot use that pseudo locale.
    
    Further, it is actually highly encouraged to use the Unicode versions
    instead of the ANSI versions, so let's do precisely that.
    
    Note: when calling the Win32 API functions _without_ any suffix, it
    depends whether the `UNICODE` constant is defined before the relevant
    headers are #include'd. Without that constant, the ANSI variants are
    used. Let's be explicit and avoid that ambiguity.
    
    Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
    dscho committed Jun 27, 2019
    Configuration menu
    Copy the full SHA
    0c9d2ae View commit details
    Browse the repository at this point in the history