diff options
author | Pádraig Brady <P@draigBrady.com> | 2014-05-19 13:04:23 +0100 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2014-05-19 13:30:28 +0100 |
commit | eec20b4e10a8f59a1880c2e05c2ed978ed3c5d3b (patch) | |
tree | 065d1ff369e96ace288f991e529de118629f990e /tests | |
parent | 97177368709e802a3e5008e1e9687e33f14da35d (diff) | |
download | gnulib-eec20b4e10a8f59a1880c2e05c2ed978ed3c5d3b.tar.gz |
getlogin_r-tests: avoid false failure under sudo/ssh etc.
* tests/test-getlogin_r.c (main): Sync up with test-getlogin.c
changes from commit 97249cf29 to not depend on environment variables.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-getlogin_r.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/tests/test-getlogin_r.c b/tests/test-getlogin_r.c index ed103c9fc7..fb3f9bffb1 100644 --- a/tests/test-getlogin_r.c +++ b/tests/test-getlogin_r.c @@ -63,11 +63,30 @@ main (void) #if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) /* Unix platform */ { - const char *name = getenv ("LOGNAME"); - if (name == NULL || name[0] == '\0') - name = getenv ("USER"); - if (name != NULL && name[0] != '\0') - ASSERT (strcmp (buf, name) == 0); +# if HAVE_TTYNAME + const char *tty; + struct stat stat_buf; + struct passwd *pwd; + + tty = ttyname (STDIN_FILENO); + if (tty == NULL) + { + fprintf (stderr, "Skipping test: stdin is not a tty.\n"); + return 77; + } + + ASSERT (stat (tty, &stat_buf) == 0); + + pwd = getpwuid (stat_buf.st_uid); + if (! pwd) + { + fprintf (stderr, "Skipping test: no name found for uid %d\n", + stat_buf.st_uid); + return 77; + } + + ASSERT (strcmp (pwd->pw_name, buf) == 0); +# endif } #endif #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ |