Hi Bruno,
Bruno Haible via Gnulib discussion list <[email protected]> writes:
> /usr/include/libintl.h:54:14: note: previous declaration of ‘dcgettext’ with
> type ‘char *(const char *, const char *, int)’
> 54 | extern char *dcgettext(const char *, const char *, int);
> | ^~~~~~~~~
> *** Error code 1
>
> This patch fixes it.
Thanks.
I noticed similar warnings caused by the return type when building gzip
from master (gzip is not localized). On a Fedora 42 system with
GNULIB_SRCDIR set so the latest Gnulib commit is used instead of
creating a git submodule:
$ /usr/lib/libc.so.6 | sed 1q
GNU C Library (GNU libc) stable release version 2.41.
$ gcc --version | sed 1q
gcc (GCC) 15.1.1 20250521 (Red Hat 15.1.1-2)
$ echo $GNULIB_SRCDIR
/home/collin/.local/src/gnulib
$ ./bootstrap && ./configure && make V=1
[...]
gcc -DHAVE_CONFIG_H -I. -fstrict-flex-arrays -Wall -Warith-conversion
-Wbad-function-cast -Wcast-align=strict -Wdate-time -Wdouble-promotion
-Wduplicated-cond -Wextra -Wformat-signedness -Wflex-array-member-not-at-end
-Winit-self -Winvalid-pch -Wmissing-declarations -Wmissing-include-dirs
-Wmissing-variable-declarations -Wnull-dereference -Wopenmp-simd
-Woverlength-strings -Wpacked -Wpointer-arith -Wstrict-flex-arrays
-Wstrict-prototypes -Wsuggest-attribute=cold -Wsuggest-attribute=const
-Wsuggest-attribute=format -Wsuggest-attribute=malloc
-Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods
-Wsuggest-final-types -Wsync-nand -Wtrampolines -Wunknown-pragmas
-Wvariadic-macros -Wvector-operation-performance -Wvla -Wwrite-strings
-Warray-bounds=2 -Wattribute-alias=2 -Wbidi-chars=any,ucn -Wformat-overflow=2
-Wformat=2 -Wimplicit-fallthrough=5 -Wshift-overflow=2 -Wuse-after-free=3
-Wunused-const-variable=2 -Wvla-larger-than=4031 -Wno-sign-compare
-Wno-type-limits -Wno-unused-parameter -Wsuggest-attribute=const
-Wsuggest-attribute=noreturn -Wno-format-nonliteral -Wsuggest-attribute=pure
-Wno-logical-op -fdiagnostics-show-option -funit-at-a-time -Werror
-Wno-cast-qual -Wno-conversion -Wno-float-equal -Wno-sign-compare -Wno-undef
-Wno-unused-function -Wno-unused-parameter -Wno-float-conversion
-Wimplicit-fallthrough -Wno-pedantic -Wno-sign-conversion -Wno-type-limits
-Wno-unused-const-variable -Wno-unsuffixed-float-constants -Wno-error -g -O2
-MT libgzip_a-xalloc-die.o -MD -MP -MF .deps/libgzip_a-xalloc-die.Tpo -c -o
libgzip_a-xalloc-die.o `test -f 'xalloc-die.c' || echo './'`xalloc-die.c
In file included from xalloc-die.c:28:
gettext.h:74:1: warning: mismatch in return type of built-in function
'gettext'; expected 'char *' [-Wbuiltin-declaration-mismatch]
74 | gettext (const char *msgid)
| ^~~~~~~
gettext.h:83:1: warning: mismatch in return type of built-in function
'dgettext'; expected 'char *' [-Wbuiltin-declaration-mismatch]
83 | dgettext (const char *domain, const char *msgid)
| ^~~~~~~~
gettext.h:93:1: warning: mismatch in return type of built-in function
'dcgettext'; expected 'char *' [-Wbuiltin-declaration-mismatch]
93 | dcgettext (const char *domain, const char *msgid, int category)
| ^~~~~~~~~
mv -f .deps/libgzip_a-xalloc-die.Tpo .deps/libgzip_a-xalloc-die.Po
[...]
Sorry I couldn't find an easier gnulib-tool recipe to replicate...
I think I remember you mentioning that gettext will be standardized to
return 'const char *' in the future. If so, I expect glibc and others to
change this in the future. Wouldn't it be safer to do something like
ICONV_CONST?
Collin