Mercurial > hg > octave-lojdl > gnulib-hg
changeset 17298:d536543d59a6
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.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Wed, 23 Jan 2013 18:20:09 -0800 |
parents | 80f2d531cd96 |
children | 761b63594339 |
files | ChangeLog lib/openat.h lib/statat.c modules/fstatat modules/statat modules/statat-tests tests/test-fstatat.c tests/test-statat.c |
diffstat | 8 files changed, 97 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2013-01-23 Paul Eggert <eggert@cs.ucla.edu> + + 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. + 2013-01-22 Paul Eggert <eggert@cs.ucla.edu> tests: don't assume fd 99 is closed
--- a/lib/openat.h +++ b/lib/openat.h @@ -89,19 +89,19 @@ #endif -#if GNULIB_FSTATAT +#if GNULIB_STATAT -# ifndef FSTATAT_INLINE -# define FSTATAT_INLINE _GL_INLINE +# ifndef STATAT_INLINE +# define STATAT_INLINE _GL_INLINE # endif -FSTATAT_INLINE int +STATAT_INLINE int statat (int fd, char const *name, struct stat *st) { return fstatat (fd, name, st, 0); } -FSTATAT_INLINE int +STATAT_INLINE int lstatat (int fd, char const *name, struct stat *st) { return fstatat (fd, name, st, AT_SYMLINK_NOFOLLOW);
--- a/lib/statat.c +++ b/lib/statat.c @@ -1,3 +1,3 @@ #include <config.h> -#define FSTATAT_INLINE _GL_EXTERN_INLINE +#define STATAT_INLINE _GL_EXTERN_INLINE #include "openat.h"
--- a/modules/fstatat +++ b/modules/fstatat @@ -3,7 +3,6 @@ Files: lib/fstatat.c -lib/statat.c lib/at-func.c m4/fstatat.m4 m4/lstat.m4 @@ -27,11 +26,9 @@ if test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1; then AC_LIBOBJ([fstatat]) fi -gl_MODULE_INDICATOR([fstatat]) dnl for lib/openat.h gl_SYS_STAT_MODULE_INDICATOR([fstatat]) Makefile.am: -lib_SOURCES += statat.c Include: <sys/stat.h> @@ -40,4 +37,4 @@ GPL Maintainer: -Jim Meyering, Eric Blake +Jim Meyering, Eric Blake, Paul Eggert
new file mode 100644 --- /dev/null +++ b/modules/statat @@ -0,0 +1,23 @@ +Description: +statat() and lstatat() functions: Return info about a file at a directory. + +Files: +lib/statat.c + +Depends-on: +fstatat + +configure.ac: +gl_MODULE_INDICATOR([statat]) dnl for lib/openat.h + +Makefile.am: +lib_SOURCES += statat.c + +Include: +"openat.h" + +License: +GPL + +Maintainer: +Jim Meyering, Eric Blake, Paul Eggert
new file mode 100644 --- /dev/null +++ b/modules/statat-tests @@ -0,0 +1,12 @@ +Files: +tests/test-statat.c + +Depends-on: +fstatat-tests + +configure.ac: + +Makefile.am: +TESTS += test-statat +check_PROGRAMS += test-statat +test_statat_LDADD = $(LDADD) @LIBINTL@
--- a/tests/test-fstatat.c +++ b/tests/test-fstatat.c @@ -36,7 +36,9 @@ #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 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
new file mode 100644 --- /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"