On HP-UX 11.23 and 11.31, I'm seeing this test failure: test-getlogin_r.c:81: assertion failed sh[10]: 19109 Abort(coredump) FAIL: test-getlogin_r
The reason is that getlogin_r (buf, 0) returns EINVAL instead of ERANGE on this platform. I think it's not worth adding a workaround in gnulib, just document it: 2011-01-02 Bruno Haible <br...@clisp.org> getlogin_r: Avoid test failure on HP-UX 11. * tests/test-getlogin_r.c (main): Allow an error code EINVAL instead of ERANGE when the second argument is zero. * doc/posix-functions/getlogin_r.texi: Document the HP-UX 11 portability problem. --- doc/posix-functions/getlogin_r.texi.orig Mon Jan 3 02:47:46 2011 +++ doc/posix-functions/getlogin_r.texi Mon Jan 3 02:47:26 2011 @@ -29,4 +29,8 @@ @item This function fails even when standard input is a tty on some platforms: HP-UX 11.11. +...@item +This function fails with error code @code{EINVAL} instead of @code{ERANGE} when +the second argument is zero on some platforms: +HP-UX 11.31. @end itemize --- tests/test-getlogin_r.c.orig Mon Jan 3 02:47:46 2011 +++ tests/test-getlogin_r.c Mon Jan 3 02:44:03 2011 @@ -78,7 +78,13 @@ size_t i; for (i = 0; i <= n; i++) - ASSERT (getlogin_r (smallbuf, i) == ERANGE); + { + err = getlogin_r (smallbuf, i); + if (i == 0) + ASSERT (err == ERANGE || err == EINVAL); + else + ASSERT (err == ERANGE); + } } /* Test with a huge buffer. */