summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2013-01-23 18:20:09 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2013-01-23 19:39:08 -0800
commit26b7d0370e2c6bbc07e86cda0848c341c7f64ec1 (patch)
treedb61afe84974e8001c0bc2773506a52b218ff486 /tests
parent2bf79a9ca704a4ae47059ee816e04fca1aeefeb3 (diff)
downloadgnulib-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.c12
-rw-r--r--tests/test-statat.c27
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"