X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-getcwd-lgpl.c;h=e3e7b7a7baaff880e9ba33eb03caa5826069cdb4;hb=fa1db0dd22768f09a507674a30beb5b8a87bb35f;hp=67ee66d5398bdeca714cc29644b43ee61b4fac21;hpb=02923aada23a2fa2122b415f313730f2e5e266ec;p=gnulib.git diff --git a/tests/test-getcwd-lgpl.c b/tests/test-getcwd-lgpl.c index 67ee66d53..e3e7b7a7b 100644 --- a/tests/test-getcwd-lgpl.c +++ b/tests/test-getcwd-lgpl.c @@ -1,5 +1,5 @@ /* Test of getcwd() function. - Copyright (C) 2009-2011 Free Software Foundation, Inc. + Copyright (C) 2009-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -65,12 +65,22 @@ main (int argc, char **argv) pwd2 = malloc (len + 2); for ( ; i <= len; i++) { + char *tmp; errno = 0; ASSERT (getcwd (pwd2, i) == NULL); ASSERT (errno == ERANGE); + /* Allow either glibc or BSD behavior, since POSIX allows both. */ errno = 0; - ASSERT (getcwd (NULL, i) == NULL); - ASSERT (errno == ERANGE); + tmp = getcwd (NULL, i); + if (tmp) + { + ASSERT (strcmp (pwd1, tmp) == 0); + free (tmp); + } + else + { + ASSERT (errno == ERANGE); + } } ASSERT (getcwd (pwd2, len + 1) == pwd2); pwd2[len] = '/'; @@ -80,6 +90,11 @@ main (int argc, char **argv) ASSERT (strstr (pwd2, "/../") == NULL); ASSERT (strstr (pwd2 + 1 + (pwd2[1] == '/'), "//") == NULL); + /* Validate a POSIX requirement on size. */ + errno = 0; + ASSERT (getcwd(pwd2, 0) == NULL); + ASSERT (errno == EINVAL); + free (pwd1); free (pwd2);