Hello,

I'm doing some more gettext stuff. Right now I have (relevant code for
the problem):

(briefly: the problem is that I'm changing a function pointer inside
gettext module code and it's not changed in other parts in Grub, even
when it's defined in include/grub/misc.h and only there)

include/grub/misc.h:
char* EXPORT_FUNC(grub_gettext_dummy) (const char *s);
char* EXPORT_FUNC((*grub_gettext)) (const char *s);

(I've done tests without EXPORT_FUNC and with EXPORT_VAR for
grub_gettext)

In normal/main.c, GRUB_MOD_INIT(normal) I have:
  grub_gettext = grub_gettext_dummy;

In normal/cmdline.c, in grub_cmdline_run and after "ESC at any time
exits":
grub_printf("grub_gettext: %d\n",grub_gettext);

In gettext/gettext.c, GRUB_MOD_INIT(gettext):
  grub_gettext = grub_gettext_translate;
  grub_printf("grub_gettext: %d\n",grub_gettext);

First time that I type "C" in Grub menu, I read grub_gettext: XXXX.

Then I insmod my module and it prints grub_printf("grub_gettext:
%d\n",grub_gettext);  (different value, of course).

I press ESC (to go to Grub menu) and C (to go to the command line) and I
get the first grub_gettext value, not the one that I changed.

How so? I don't declare grub_gettext again, how I can change (and check
that it's changed) but not changed back?

I even tried to not assign in normal/main.c (just in case that code part
is executed two times) but still it didn't work (again, value has not
been changed).

Thanks,

-- 
Carles Pina i Estany            GPG id: 0x17756391
        http://pinux.info


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to