Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: "Владимир Мартьянов" <vilgeforce@gmail.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH][PR server/24377] Fix mixing English and system default languages in error messages on Windows
Date: Sun, 31 Mar 2019 14:45:00 -0000	[thread overview]
Message-ID: <8336n3hzkx.fsf@gnu.org> (raw)
In-Reply-To: <CAL5iTP+_iZwf+NyMXM8+xRUd4H8ibSSvTKF=e8HrQ+MbJDfv1g@mail.gmail.com>	(message from =?utf-8?B?0JLQu9Cw0LTQuNC80LjRgCDQnNCw0YDRgtGM0Y/QvdC+0LI=?= on Sun, 31 Mar 2019 00:26:30 +0300)

> From: Владимир Мартьянов <vilgeforce@gmail.com>
> Date: Sun, 31 Mar 2019 00:26:30 +0300
> Cc: gdb-patches@sourceware.org
> 
> I'm proposing this patch to translate messages in strwinerror.

Thanks, I have a few comments.

> I didn't check locale name against "C" value because don't know what
> locale to use: English or system default.

The "C" locale is more or less identical to the English locale, not to
the system default.

> +  //retrieve LCID

I believe the convention is to use comments /* like this */.

> +  typedef HRESULT (WINAPI *RFC1766TOLCID)(LCID *pLocale, LPTSTR pszRfc1766);
> +  RFC1766TOLCID Rfc1766ToLcid;

This is an undocumented function.  I think using it is only justified
on XP, because since Vista there's the documented LocaleNameToLCID.
If LocaleNameToLCID is available, we should use it in preference to
Rfc1766ToLcid.

> +  HMODULE hMlang = LoadLibrary("Mlang.dll");
> +  if (hMlang != NULL)
> [...]
> +    FreeLibrary(hMlang);

Instead of loading the DLL every time this function is called, make
hMlang a static variable, and then you need to load the DLL and obtain
the function's entry address only once, the first time the function is
called.

> +      localeName = getenv ("LC_ALL");
> +      if (localeName == NULL || localeName[0] == '\0')
> +      {
> +        /* Next comes the name of the desired category.  */
> +        localeName = getenv ("LC_MESSAGES");
> +        if (localeName == NULL || localeName[0] == '\0')
> +        {
> +          /* Last possibility is the LANG environment variable.  */
> +          localeName = getenv ("LANG");

Bother: do we want to behave like a Posix platform here, or like a
Windows system?  Windows doesn't have LC_MESSAGES as a locale
category.

> +        }
> +      }
> +    }
> +
> +    if (localeName != NULL && localeName[0] != '\0'){   //have something to convert
> +      strncpy(buf, localeName, (COUNTOF (buf)) - 1);
> +
> +      ptr = strchr(buf, '.');		//cut at "."
> +      if (ptr != 0) {
> +        *ptr = 0x00;
> +      }

There are some stylistic issues here: the braces should be on separate
lines, there should be a blank between a function/macro name and the
opening parenthesis, and I believe we use NULL, not zero for a null
pointer.  Also, a single-line block doesn't need to use braces.

Finally, a more general point: I'm not sure I understand the purpose
of this change.  Is the purpose to let users control the language of
the gdbserver system error messages?  If so, would they need to
control that by setting environment variables?  It sounds less
convenient than it could have been, I think.  Why not a GDB variable
instead?

Thanks.


  reply	other threads:[~2019-03-31 14:45 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-23 11:59 Владимир Мартьянов
2019-03-23 13:11 ` Eli Zaretskii
2019-03-28 20:36   ` Владимир Мартьянов
2019-03-29  8:27     ` Eli Zaretskii
2019-03-29  8:42       ` Владимир Мартьянов
2019-03-29  9:29         ` Eli Zaretskii
2019-03-29  9:39           ` Владимир Мартьянов
2019-03-29 12:32             ` Eli Zaretskii
2019-03-30 21:26               ` Владимир Мартьянов
2019-03-31 14:45                 ` Eli Zaretskii [this message]
2019-03-31 19:39                   ` Владимир Мартьянов
2019-04-01  4:47                     ` Eli Zaretskii
2019-04-02 20:08                       ` Владимир Мартьянов
2019-04-03  4:30                         ` Eli Zaretskii
2019-04-01 22:08                     ` Jon Turney
2019-04-02 20:57                       ` Владимир Мартьянов
2019-04-02 21:10                         ` Jon Turney
2019-04-02 21:18                           ` Владимир Мартьянов
2019-04-03  4:48                         ` Eli Zaretskii
2019-04-03  4:58                           ` LRN
2019-04-03  7:37                             ` Eli Zaretskii
2019-04-03 11:32                               ` LRN
2019-04-03 12:04                                 ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8336n3hzkx.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=vilgeforce@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox