I know I believe in nothing but it is my sweet nothing.:2015年05月分

2015/05/26(Tue)

[NetBSD][I18N] pgettext(3)

このパッチ、pgettext(3)関係をライブラリ関数として実装してるんだけど、そもそも本家のlibintlでは全部マクロとインライン関数で提供してて、libintlそのもののABIってずっと変化してないのよね。

以下 gnulib-lib/gettext.h より抜粋

#ifdef DEFAULT_TEXT_DOMAIN
# define pgettext(Msgctxt, Msgid) \
   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
#else
# define pgettext(Msgctxt, Msgid) \
   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
#endif

...

#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
static const char *
pgettext_aux (const char *domain,
              const char *msg_ctxt_id, const char *msgid,
              int category)
{
  const char *translation = dcgettext (domain, msg_ctxt_id, category);
  if (translation == msg_ctxt_id)
    return msgid;
  else
    return translation;
}

ちゅーかんじで、gettext.hの中だけで完結してるのよね。

このあたりのネタ tech-pkgsrc 方面でしばしば炎上してて、その度に

という議論になってた記憶があるんですが、もうその辺りの問題を理解してる人は N/pkgsrc に残ってないんですかね?

なお gettext.h 自体は GPL なので BSDLな実装が欲しいといいのはアリなのかなとは思いますが、じゃあ BSDL gettextize(1) まで実装するんですかね?という深い闇が、ああ。

2015/05/31(Sun)

[I18N][NetBSD] 続 pgettext(3)

先日の続きまた君か壊れるなぁ。

壊れようがどうでもいいんですが、一応 Citrus の一部なので将来的に致命的な ABI 非互換発生した時に、GNU 方面からバカにされるのは NetBSD だけにしといてくれ感がある。