At Thu, 7 Dec 2023 09:43:37 +1300, Thomas Munro <thomas.mu...@gmail.com> wrote in > On Tue, Dec 5, 2023 at 3:43 PM Kyotaro Horiguchi > <horikyota....@gmail.com> wrote: > > Windows' gai_strerror outputs messages that correspond to the language > > environment. Similarly, I think that the messages that the messages > > returned by our version should be translatable. > > Hmm, that is a good point. Wow, POSIX has given us a terrible > interface here, in terms of resource management. Let's see what glibc > does: > > https://github.com/lattera/glibc/blob/master/sysdeps/posix/gai_strerror.c > https://github.com/lattera/glibc/blob/master/sysdeps/posix/gai_strerror-strs.h
It is quite a sight for sore eyes... > It doesn't look like it knows about locales at all. And a test > program seems to confirm: .. > setlocale(LC_MESSAGES, "ja_JP.UTF-8"); > printf("%s\n", gai_strerror(EAI_MEMORY)); > > That prints: > > Memory allocation failure > > FreeBSD tries harder, and prints: > > メモリ割り当て失敗 > > We can see that it has a thread-local variable that holds a copy of > that localised string until the next call to gai_strerror() in the > same thread: > > https://github.com/freebsd/freebsd-src/blob/main/lib/libc/net/gai_strerror.c > https://github.com/freebsd/freebsd-src/blob/main/lib/libc/nls/ja_JP.UTF-8.msg > > FreeBSD's message catalogues would provide a read-made source of > translations, bu... hmm, if glibc doesn't bother and the POSIX > interface is unhelpful and Windows' own implementation is so willfully > unusable, I don't really feel inclined to build a whole thread-local > cache thing on our side just to support this mess. I agree, I wouldn't want to do it either. > So I think we should just hard-code the error messages in English and > move on. However, English is my language so perhaps I should abstain > and leave it to others to decide how important that is. I also think that would be a good way. > > These messages may add extra line-end periods to the parent (or > > cotaining) messages when appended. This looks as follows. > > > > (auth.c:517 : errdetail_log() : sub (detail) message) > > > Could not translate client host name "hoge" to IP address: An address > > > incompatible with the requested protocol was used.. > > > > (hba.c:1562 : errmsg() : main message) > > > invalid IP address "192.0.2.1": This is usually a temporary error during > > > hostname resolution and means that the local server did not receive a > > > response from an authoritative server. > > > > When I first saw the first version, I thought it would be better to > > use Windows' own messages, just like you did. However, considering the > > content of the message above, wouldn't it be better to adhere to > > Linux-style messages overall? > > Yeah, I agree that either the glibc or the FreeBSD messages would be > better than those now that I've seen them. They are short and sweet. > > > A slightly subtler point is that the second example seems to have a > > misalignment between the descriptions before and after the colon, but > > do you think it's not something to be concerned about to this extent? > > I didn't understand what you meant here. If it was just a temporary error that couldn't be resolved, it doesn't mean that the IP address is invalid. If such a cause is possible, then probabyly an error message saying "failed to resolve" would be more appropriate. However, I wrote it meaning that there is no need to go to great length to ensure consistency with this message. regards. -- Kyotaro Horiguchi NTT Open Source Software Center