mconf.c and bindtextdomain() -- warnings while cross-compiling onOS X

From: Timur Tabi
Date: Sat May 03 2008 - 23:58:19 EST


I'm cross-compiling the kernel on an OS X system, and when I run "make menuconfig", I get this warning:

HOSTCC scripts/kconfig/mconf.o
scripts/kconfig/mconf.c: In function ‘main’:
scripts/kconfig/mconf.c:871: warning: statement with no effect
scripts/kconfig/mconf.c:872: warning: statement with no effect

Here is the code in question:

int main(int ac, char **av)
{
int saved_x, saved_y;
char *mode;
int res;

setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR); <--- line 871
textdomain(PACKAGE);

I believe the warnings are from this code in lkc.h:

#ifndef KBUILD_NO_NLS
# include <libintl.h>
#else
# define gettext(Msgid) ((const char *) (Msgid))
# define textdomain(Domainname) ((const char *) (Domainname))
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
#endif

Can someone explain to me why this macros are defined in this way? Every place where textdomain() and bindtext() are used, they are used like this:

bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);

In other words, the return value from these macros is never used, so the warning is inevitable.

I think the code in lkc.h should be changed to:

# define textdomain(Domainname) do {} while(0)
# define bindtextdomain(Domainname, Dirname) do {} while(0)

I can't say for certain whether this is a good idea, though, because I'm not at all familiar with this code.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/