[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

changing a function pointer in a module

From: Carles Pina i Estany
Subject: changing a function pointer in a module
Date: Fri, 16 Jan 2009 22:28:12 +0100
User-agent: Mutt/1.5.18 (2008-05-17)


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)

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

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
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).


Carles Pina i Estany            GPG id: 0x17756391

reply via email to

[Prev in Thread] Current Thread [Next in Thread]