On Solaris 11.4/sparc I see a test failure: $ ./test-strerrorname_np ../../gltests/test-strerrorname_np.c:310: assertion 'strcmp (strerrorname_np (EBADE), "EBADE") == 0' failed Abort (core dumped)
This patch fixes it. 2023-06-25 Bruno Haible <br...@clisp.org> strerrorname_np: Add support for Solaris 11.4/sparc. * lib/strerrorname_np.c (strerrorname_np): Consider ECKSUM, EFRAGS. Allow ENOANO to be overloaded to another value. * tests/test-strerrorname_np.c (main): Likewise. diff --git a/lib/strerrorname_np.c b/lib/strerrorname_np.c index 6bbb84f044..4445a88ac6 100644 --- a/lib/strerrorname_np.c +++ b/lib/strerrorname_np.c @@ -304,7 +304,7 @@ strerrorname_np (int errnum) case EBADCPU: return "EBADCPU"; #endif /* Linux, IRIX, Solaris, Cygwin */ - #if defined EBADE + #if defined EBADE && EBADE != ECKSUM case EBADE: return "EBADE"; #endif /* Minix */ @@ -336,7 +336,7 @@ strerrorname_np (int errnum) case EBADMODE: return "EBADMODE"; #endif /* Linux, IRIX, Solaris, Cygwin */ - #if defined EBADR + #if defined EBADR && EBADR != EFRAGS case EBADR: return "EBADR"; #endif /* Minix */ @@ -407,6 +407,10 @@ strerrorname_np (int errnum) #if defined ECKPT case ECKPT: return "ECKPT"; #endif + /* Solaris */ + #if defined ECKSUM + case ECKSUM: return "ECKSUM"; + #endif /* IRIX */ #if defined ECLOCKCPU case ECLOCKCPU: return "ECLOCKCPU"; @@ -567,6 +571,10 @@ strerrorname_np (int errnum) #if defined EFPOS case EFPOS: return "EFPOS"; #endif + /* Solaris */ + #if defined EFRAGS + case EFRAGS: return "EFRAGS"; + #endif /* IRIX */ #if defined EFSCORRUPTED case EFSCORRUPTED: return "EFSCORRUPTED"; @@ -1016,7 +1024,7 @@ strerrorname_np (int errnum) case ENMFILE: return "ENMFILE"; #endif /* Linux, IRIX, Solaris, Cygwin */ - #if defined ENOANO + #if defined ENOANO && ENOANO != ENOKEY case ENOANO: return "ENOANO"; #endif /* IRIX */ diff --git a/tests/test-strerrorname_np.c b/tests/test-strerrorname_np.c index 49de0c750d..5bd0f3ab55 100644 --- a/tests/test-strerrorname_np.c +++ b/tests/test-strerrorname_np.c @@ -306,7 +306,7 @@ main (void) ASSERT (strcmp (strerrorname_np (EBADCPU), "EBADCPU") == 0); #endif /* Linux, IRIX, Solaris, Cygwin */ - #if defined EBADE + #if defined EBADE && EBADE != ECKSUM ASSERT (strcmp (strerrorname_np (EBADE), "EBADE") == 0); #endif /* Minix */ @@ -338,7 +338,7 @@ main (void) ASSERT (strcmp (strerrorname_np (EBADMODE), "EBADMODE") == 0); #endif /* Linux, IRIX, Solaris, Cygwin */ - #if defined EBADR + #if defined EBADR && EBADR != EFRAGS ASSERT (strcmp (strerrorname_np (EBADR), "EBADR") == 0); #endif /* Minix */ @@ -409,6 +409,10 @@ main (void) #if defined ECKPT ASSERT (strcmp (strerrorname_np (ECKPT), "ECKPT") == 0); #endif + /* Solaris */ + #if defined ECKSUM + ASSERT (strcmp (strerrorname_np (ECKSUM), "ECKSUM") == 0); + #endif /* IRIX */ #if defined ECLOCKCPU ASSERT (strcmp (strerrorname_np (ECLOCKCPU), "ECLOCKCPU") == 0); @@ -569,6 +573,10 @@ main (void) #if defined EFPOS ASSERT (strcmp (strerrorname_np (EFPOS), "EFPOS") == 0); #endif + /* Solaris */ + #if defined EFRAGS + ASSERT (strcmp (strerrorname_np (EFRAGS), "EFRAGS") == 0); + #endif /* IRIX */ #if defined EFSCORRUPTED ASSERT (strcmp (strerrorname_np (EFSCORRUPTED), "EFSCORRUPTED") == 0); @@ -1018,7 +1026,7 @@ main (void) ASSERT (strcmp (strerrorname_np (ENMFILE), "ENMFILE") == 0); #endif /* Linux, IRIX, Solaris, Cygwin */ - #if defined ENOANO + #if defined ENOANO && ENOANO != ENOKEY ASSERT (strcmp (strerrorname_np (ENOANO), "ENOANO") == 0); #endif /* IRIX */