diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2013-01-23 18:20:09 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2013-01-23 19:39:08 -0800 |
commit | 26b7d0370e2c6bbc07e86cda0848c341c7f64ec1 (patch) | |
tree | db61afe84974e8001c0bc2773506a52b218ff486 /tests | |
parent | 2bf79a9ca704a4ae47059ee816e04fca1aeefeb3 (diff) | |
download | gnulib-26b7d0370e2c6bbc07e86cda0848c341c7f64ec1.tar.gz |
statat: new module, split out from fstatat
GNU Emacs needs the POSIX-specified fstatat, but not the
gnulib-specified statat and lstat. Split the latter two into a
new module 'statat'.
* lib/openat.h: Depend on GNULIB_STATAT, not GNULIB_FSTATAT.
* lib/openat.h, lib/statat.c (STATAT_INLINE):
Rename from FSTATAT_INLINE. All uses changed.
* modules/fstatat (Files): Remove lib/statat.c.
(gl_MODULE_INDICATOR([fstatat])): Remove.
(lib_SOURCES): Remove.
(Maintainer): Add self.
* modules/statat, modules/statat-tests, tests/test-statat.c: New files.
* tests/test-fstatat.c (BASE): Don't define if already defined.
(do_stat, do_lstat) [!TEST_STATAT]: Test fstatat instead.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-fstatat.c | 12 | ||||
-rw-r--r-- | tests/test-statat.c | 27 |
2 files changed, 38 insertions, 1 deletions
diff --git a/tests/test-fstatat.c b/tests/test-fstatat.c index 83e184f025..9fdbe2e6eb 100644 --- a/tests/test-fstatat.c +++ b/tests/test-fstatat.c @@ -36,7 +36,9 @@ SIGNATURE_CHECK (fstatat, int, (int, char const *, struct stat *, int)); #include "ignore-value.h" #include "macros.h" -#define BASE "test-fstatat.t" +#ifndef BASE +# define BASE "test-fstatat.t" +#endif #include "test-lstat.h" #include "test-stat.h" @@ -47,14 +49,22 @@ static int dfd = AT_FDCWD; static int do_stat (char const *name, struct stat *st) { +#ifdef TEST_STATAT return statat (dfd, name, st); +#else + return fstatat (dfd, name, st, 0); +#endif } /* Wrapper around fstatat to test lstat behavior. */ static int do_lstat (char const *name, struct stat *st) { +#ifdef TEST_STATAT return lstatat (dfd, name, st); +#else + return fstatat (dfd, name, st, AT_SYMLINK_NOFOLLOW); +#endif } int diff --git a/tests/test-statat.c b/tests/test-statat.c new file mode 100644 index 0000000000..4adb3ab73d --- /dev/null +++ b/tests/test-statat.c @@ -0,0 +1,27 @@ +/* Tests of statat and lstatat. + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> + +#include "openat.h" + +#include "signature.h" +SIGNATURE_CHECK (statat, int, (int, char const *, struct stat *)); +SIGNATURE_CHECK (lstatat, int, (int, char const *, struct stat *)); + +#define BASE "test-statat.t" +#define TEST_STATAT +#include "test-fstatat.c" |