Hi OATH Toolkit doesn't use or need strerror_l anywehere. I got this complaint on macOS for OATH Toolkit [1]:
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../../liboath/gl -I..
-fvisibility=hidden -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-tautological-constant-out-of-range-compare -Wno-sign-conversion
-Wno-type-limits -Wno-unused-const-variable -Wno-error -g -O2 -MT
libgnu_la-byteswap.lo -MD -MP -MF .deps/libgnu_la-byteswap.Tpo -c
../../../liboath/gl/byteswap.c -o libgnu_la-byteswap.o >/dev/null 2>&1
In file included from ../../../liboath/gl/basename-lgpl.c:24:
./string.h:2040:18: error: use of undeclared identifier 'strerror_l'; did you
mean 'strerror_r'?
2040 | _GL_WARN_ON_USE (strerror_l, "strerror_l is unportable - "
| ^
And on Windows MINGW64 [2]:
make[5]: Entering directory
'/c/GitLab-Runner/builds/oath-toolkit/oath-toolkit/oath-toolkit-2.6.12.62-d61b/liboath/gtk-doc'
In file included from oath.h:58,
from hotp.c:23:
./gl/string.h:2040:1: error: 'strerror_l' undeclared here (not in a function);
did you mean 'strerror_s'?
2040 | _GL_WARN_ON_USE (strerror_l, "strerror_l is unportable - "
| ^~~~~~~~~~~~~~~
make[3]: *** [Makefile:1645: hotp.lo] Error 1
Judging from the errors, is this a gnulib problem, or a consequence of
how I'm using gnulib in OATH Toolkit?
Reading string.in.h and comparing with other declarations, I came up
with the patch below that fixes my problem (confirmed) but I'm fairly
sure I don't understand how the logic here is intended to work.
Any hints?
/Simon
[1] https://gitlab.com/oath-toolkit/oath-toolkit/-/jobs/9649709478
[2] https://gitlab.com/oath-toolkit/oath-toolkit/-/jobs/9649709430
diff --git a/lib/string.in.h b/lib/string.in.h
index e6bf675151..44b9497d80 100644
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -1499,9 +1499,10 @@ _GL_CXXALIASWARN (strerror_l);
# endif
#elif defined GNULIB_POSIXCHECK
# undef strerror_l
-/* Assume strerror_l is always declared. */
+# if HAVE_RAW_DECL_STRERROR_L
_GL_WARN_ON_USE (strerror_l, "strerror_l is unportable - "
"use gnulib module strerror_l for portability");
+# endif
#endif
/* Map any int, typically from errno, into an error message. Multithread-safe,
signature.asc
Description: PGP signature
