I burned DVD, installed Fedora 8 and could reproduced your problem.
Some of applications do not set bind_textdomain_codeset().

I think the attached patch will fix your main problem with removing your change 
of the workaround.

Thanks,
fujiwara

Robert Scheck wrote:
On Mon, 14 Jan 2008, Takao Fujiwara - Tokyo S/W Center wrote:

Robert Scheck wrote:

Fedora 7 has popt delivered with rpm, so it's an old popt version which
never saw your changes. And all popt packages I officially prepared for
Fedora 8 are currently undoing your changes per patch to avoid really any
regression for the Fedora users.

Hmm.., I mean I've already applied the POPT_printf parts with popt sources and I cannot reproduce your problem.


Well...rpm, kudzu and most of the rest were static linked to popt in Fedora
7. This changed with Fedora 8 the first time. If you really want to try to
reproduce this, go and rebuild all packages depending on popt first. Or try
Fedora 8 which doesn't link statically to popt any longer for rpm and kudzu
- at least it shouldn't.


Greetings,
  Robert


--- popt/poptint.c.orig 2008-01-16 10:20:39.000000000 +0900
+++ popt/poptint.c      2008-01-16 10:28:57.000000000 +0900
@@ -2,6 +2,24 @@
 #include <stdarg.h>
 #include "poptint.h"
 
+#if defined(HAVE_DCGETTEXT) && !defined(__LCLINT__)
+char *
+_D_ (const char * dom, const char * str)
+{
+  char * codeset = NULL;
+  char * retval = NULL;
+
+  if (!dom) 
+    dom = textdomain (NULL);
+  codeset = bind_textdomain_codeset (dom, NULL);
+  bind_textdomain_codeset (dom, "UTF-8");
+  retval = dgettext(dom, str);
+  bind_textdomain_codeset (dom, codeset);
+
+  return retval;
+}
+#endif
+
 #ifdef HAVE_ICONV
 static /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ char *
 strdup_locale_from_utf8 (/[EMAIL PROTECTED]@*/ char *buffer)
--- popt/poptint.h.orig 2008-01-16 02:01:07.000000000 +0900
+++ popt/poptint.h      2008-01-16 02:34:38.000000000 +0900
@@ -105,7 +105,7 @@ struct poptContext_s {
 #endif
 
 #if defined(HAVE_DCGETTEXT) && !defined(__LCLINT__)
-#define D_(dom, str) dgettext(dom, str)
+#define D_(dom, str) _D_(dom, str)
 #define POPT_(foo) D_("popt", foo)
 #else
 #define D_(dom, str) str

Reply via email to