mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-09-01 02:34:55 +00:00
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.
This commit is contained in:
@@ -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
|
||||
|
||||
+5
-5
@@ -89,19 +89,19 @@ lchmodat (int fd, char const *file, mode_t mode)
|
||||
|
||||
#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);
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
#include <config.h>
|
||||
#define FSTATAT_INLINE _GL_EXTERN_INLINE
|
||||
#define STATAT_INLINE _GL_EXTERN_INLINE
|
||||
#include "openat.h"
|
||||
|
||||
+1
-4
@@ -3,7 +3,6 @@ fstatat() function: Return information about a file at a directory.
|
||||
|
||||
Files:
|
||||
lib/fstatat.c
|
||||
lib/statat.c
|
||||
lib/at-func.c
|
||||
m4/fstatat.m4
|
||||
m4/lstat.m4
|
||||
@@ -27,11 +26,9 @@ gl_FUNC_FSTATAT
|
||||
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 @@ License:
|
||||
GPL
|
||||
|
||||
Maintainer:
|
||||
Jim Meyering, Eric Blake
|
||||
Jim Meyering, Eric Blake, Paul Eggert
|
||||
|
||||
@@ -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
|
||||
@@ -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@
|
||||
+11
-1
@@ -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
|
||||
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user