Import lstat
This patch is to import lstat gnulib module. gdb: 2014-11-28 Yao Qi <yao@codesourcery.com> * gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add lstat. * gnulib/aclocal.m4: Re-generated. * gnulib/config.in: Re-generated. * gnulib/configure: Re-generated. * gnulib/import/Makefile.am: Re-generated. * gnulib/import/Makefile.in: Re-generated. * gnulib/import/m4/gnulib-cache.m4: Re-generated. * gnulib/import/m4/gnulib-comp.m4: Re-generated. * gnulib/import/lstat.c: New file. * gnulib/import/m4/lstat.m4: New file.
This commit is contained in:
parent
bdca27a2f5
commit
f45c62c4d5
11 changed files with 400 additions and 79 deletions
|
@ -1,3 +1,17 @@
|
|||
2014-11-28 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add
|
||||
lstat.
|
||||
* gnulib/aclocal.m4: Re-generated.
|
||||
* gnulib/config.in: Re-generated.
|
||||
* gnulib/configure: Re-generated.
|
||||
* gnulib/import/Makefile.am: Re-generated.
|
||||
* gnulib/import/Makefile.in: Re-generated.
|
||||
* gnulib/import/m4/gnulib-cache.m4: Re-generated.
|
||||
* gnulib/import/m4/gnulib-comp.m4: Re-generated.
|
||||
* gnulib/import/lstat.c: New file.
|
||||
* gnulib/import/m4/lstat.m4: New file.
|
||||
|
||||
2014-11-28 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* configure.ac (AC_CHECK_FUNCS): Remove readlink.
|
||||
|
|
1
gdb/gnulib/aclocal.m4
vendored
1
gdb/gnulib/aclocal.m4
vendored
|
@ -1043,6 +1043,7 @@ m4_include([import/m4/locale-fr.m4])
|
|||
m4_include([import/m4/locale-ja.m4])
|
||||
m4_include([import/m4/locale-zh.m4])
|
||||
m4_include([import/m4/longlong.m4])
|
||||
m4_include([import/m4/lstat.m4])
|
||||
m4_include([import/m4/math_h.m4])
|
||||
m4_include([import/m4/mbrtowc.m4])
|
||||
m4_include([import/m4/mbsinit.m4])
|
||||
|
|
|
@ -52,6 +52,9 @@
|
|||
/* Define to 1 when the gnulib module frexpl should be tested. */
|
||||
#undef GNULIB_TEST_FREXPL
|
||||
|
||||
/* Define to 1 when the gnulib module lstat should be tested. */
|
||||
#undef GNULIB_TEST_LSTAT
|
||||
|
||||
/* Define to 1 when the gnulib module mbrtowc should be tested. */
|
||||
#undef GNULIB_TEST_MBRTOWC
|
||||
|
||||
|
@ -943,6 +946,10 @@
|
|||
/* Define as the word index where to find the exponent of 'long double'. */
|
||||
#undef LDBL_EXPBIT0_WORD
|
||||
|
||||
/* Define to 1 if 'lstat' dereferences a symlink specified with a trailing
|
||||
slash. */
|
||||
#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||
|
||||
/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
|
||||
#undef MAP_ANONYMOUS
|
||||
|
||||
|
|
248
gdb/gnulib/configure
vendored
248
gdb/gnulib/configure
vendored
|
@ -694,39 +694,6 @@ HAVE__BOOL
|
|||
GL_GENERATE_STDBOOL_H_FALSE
|
||||
GL_GENERATE_STDBOOL_H_TRUE
|
||||
STDBOOL_H
|
||||
REPLACE_UTIMENSAT
|
||||
REPLACE_STAT
|
||||
REPLACE_MKNOD
|
||||
REPLACE_MKFIFO
|
||||
REPLACE_MKDIR
|
||||
REPLACE_LSTAT
|
||||
REPLACE_FUTIMENS
|
||||
REPLACE_FSTATAT
|
||||
REPLACE_FSTAT
|
||||
HAVE_UTIMENSAT
|
||||
HAVE_MKNODAT
|
||||
HAVE_MKNOD
|
||||
HAVE_MKFIFOAT
|
||||
HAVE_MKFIFO
|
||||
HAVE_MKDIRAT
|
||||
HAVE_LSTAT
|
||||
HAVE_LCHMOD
|
||||
HAVE_FUTIMENS
|
||||
HAVE_FSTATAT
|
||||
HAVE_FCHMODAT
|
||||
GNULIB_UTIMENSAT
|
||||
GNULIB_STAT
|
||||
GNULIB_MKNODAT
|
||||
GNULIB_MKNOD
|
||||
GNULIB_MKFIFOAT
|
||||
GNULIB_MKFIFO
|
||||
GNULIB_MKDIRAT
|
||||
GNULIB_LSTAT
|
||||
GNULIB_LCHMOD
|
||||
GNULIB_FUTIMENS
|
||||
GNULIB_FSTATAT
|
||||
GNULIB_FSTAT
|
||||
GNULIB_FCHMODAT
|
||||
UNDEFINE_STRTOK_R
|
||||
REPLACE_STRTOK_R
|
||||
REPLACE_STRSIGNAL
|
||||
|
@ -897,6 +864,39 @@ GNULIB_WCTOB
|
|||
GNULIB_BTOWC
|
||||
NEXT_AS_FIRST_DIRECTIVE_MATH_H
|
||||
NEXT_MATH_H
|
||||
REPLACE_UTIMENSAT
|
||||
REPLACE_STAT
|
||||
REPLACE_MKNOD
|
||||
REPLACE_MKFIFO
|
||||
REPLACE_MKDIR
|
||||
REPLACE_LSTAT
|
||||
REPLACE_FUTIMENS
|
||||
REPLACE_FSTATAT
|
||||
REPLACE_FSTAT
|
||||
HAVE_UTIMENSAT
|
||||
HAVE_MKNODAT
|
||||
HAVE_MKNOD
|
||||
HAVE_MKFIFOAT
|
||||
HAVE_MKFIFO
|
||||
HAVE_MKDIRAT
|
||||
HAVE_LSTAT
|
||||
HAVE_LCHMOD
|
||||
HAVE_FUTIMENS
|
||||
HAVE_FSTATAT
|
||||
HAVE_FCHMODAT
|
||||
GNULIB_UTIMENSAT
|
||||
GNULIB_STAT
|
||||
GNULIB_MKNODAT
|
||||
GNULIB_MKNOD
|
||||
GNULIB_MKFIFOAT
|
||||
GNULIB_MKFIFO
|
||||
GNULIB_MKDIRAT
|
||||
GNULIB_LSTAT
|
||||
GNULIB_LCHMOD
|
||||
GNULIB_FUTIMENS
|
||||
GNULIB_FSTATAT
|
||||
GNULIB_FSTAT
|
||||
GNULIB_FCHMODAT
|
||||
LOCALCHARSET_TESTS_ENVIRONMENT
|
||||
GLIBC21
|
||||
NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H
|
||||
|
@ -3090,6 +3090,7 @@ as_fn_append ac_header_list " stdint.h"
|
|||
as_fn_append ac_header_list " inttypes.h"
|
||||
as_fn_append ac_header_list " unistd.h"
|
||||
as_fn_append ac_func_list " symlink"
|
||||
as_fn_append ac_func_list " lstat"
|
||||
as_fn_append ac_header_list " math.h"
|
||||
as_fn_append ac_func_list " mbsinit"
|
||||
as_fn_append ac_func_list " mbrtowc"
|
||||
|
@ -3097,7 +3098,6 @@ as_fn_append ac_header_list " sys/mman.h"
|
|||
as_fn_append ac_func_list " mprotect"
|
||||
as_fn_append ac_header_list " sys/param.h"
|
||||
as_fn_append ac_func_list " readlink"
|
||||
as_fn_append ac_func_list " lstat"
|
||||
as_fn_append ac_header_list " sys/stat.h"
|
||||
as_fn_append ac_header_list " sys/time.h"
|
||||
as_fn_append ac_header_list " features.h"
|
||||
|
@ -5030,6 +5030,7 @@ fi
|
|||
# Code from module largefile:
|
||||
|
||||
# Code from module localcharset:
|
||||
# Code from module lstat:
|
||||
# Code from module math:
|
||||
# Code from module mbrtowc:
|
||||
# Code from module mbsinit:
|
||||
|
@ -8875,6 +8876,106 @@ $as_echo "$ac_cv_gnu_library_2_1" >&6; }
|
|||
|
||||
|
||||
|
||||
GNULIB_FCHMODAT=0;
|
||||
GNULIB_FSTAT=0;
|
||||
GNULIB_FSTATAT=0;
|
||||
GNULIB_FUTIMENS=0;
|
||||
GNULIB_LCHMOD=0;
|
||||
GNULIB_LSTAT=0;
|
||||
GNULIB_MKDIRAT=0;
|
||||
GNULIB_MKFIFO=0;
|
||||
GNULIB_MKFIFOAT=0;
|
||||
GNULIB_MKNOD=0;
|
||||
GNULIB_MKNODAT=0;
|
||||
GNULIB_STAT=0;
|
||||
GNULIB_UTIMENSAT=0;
|
||||
HAVE_FCHMODAT=1;
|
||||
HAVE_FSTATAT=1;
|
||||
HAVE_FUTIMENS=1;
|
||||
HAVE_LCHMOD=1;
|
||||
HAVE_LSTAT=1;
|
||||
HAVE_MKDIRAT=1;
|
||||
HAVE_MKFIFO=1;
|
||||
HAVE_MKFIFOAT=1;
|
||||
HAVE_MKNOD=1;
|
||||
HAVE_MKNODAT=1;
|
||||
HAVE_UTIMENSAT=1;
|
||||
REPLACE_FSTAT=0;
|
||||
REPLACE_FSTATAT=0;
|
||||
REPLACE_FUTIMENS=0;
|
||||
REPLACE_LSTAT=0;
|
||||
REPLACE_MKDIR=0;
|
||||
REPLACE_MKFIFO=0;
|
||||
REPLACE_MKNOD=0;
|
||||
REPLACE_STAT=0;
|
||||
REPLACE_UTIMENSAT=0;
|
||||
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5
|
||||
$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; }
|
||||
if test "${gl_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
rm -f conftest.sym conftest.file
|
||||
echo >conftest.file
|
||||
if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
|
||||
if test "$cross_compiling" = yes; then :
|
||||
case "$host_os" in
|
||||
# Guess yes on glibc systems.
|
||||
*-gnu*) gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
|
||||
# If we don't know, assume the worst.
|
||||
*) gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
|
||||
esac
|
||||
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
int
|
||||
main ()
|
||||
{
|
||||
struct stat sbuf;
|
||||
/* Linux will dereference the symlink and fail, as required by
|
||||
POSIX. That is better in the sense that it means we will not
|
||||
have to compile and use the lstat wrapper. */
|
||||
return lstat ("conftest.sym/", &sbuf) == 0;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"; then :
|
||||
gl_cv_func_lstat_dereferences_slashed_symlink=yes
|
||||
else
|
||||
gl_cv_func_lstat_dereferences_slashed_symlink=no
|
||||
fi
|
||||
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
|
||||
conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
fi
|
||||
|
||||
else
|
||||
# If the 'ln -s' command failed, then we probably don't even
|
||||
# have an lstat function.
|
||||
gl_cv_func_lstat_dereferences_slashed_symlink="guessing no"
|
||||
fi
|
||||
rm -f conftest.sym conftest.file
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lstat_dereferences_slashed_symlink" >&5
|
||||
$as_echo "$gl_cv_func_lstat_dereferences_slashed_symlink" >&6; }
|
||||
case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
|
||||
*yes)
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
|
||||
_ACEOF
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB_BTOWC=0;
|
||||
|
@ -9869,43 +9970,6 @@ $as_echo "$gl_cv_func_memmem_works_always" >&6; }
|
|||
|
||||
|
||||
|
||||
|
||||
GNULIB_FCHMODAT=0;
|
||||
GNULIB_FSTAT=0;
|
||||
GNULIB_FSTATAT=0;
|
||||
GNULIB_FUTIMENS=0;
|
||||
GNULIB_LCHMOD=0;
|
||||
GNULIB_LSTAT=0;
|
||||
GNULIB_MKDIRAT=0;
|
||||
GNULIB_MKFIFO=0;
|
||||
GNULIB_MKFIFOAT=0;
|
||||
GNULIB_MKNOD=0;
|
||||
GNULIB_MKNODAT=0;
|
||||
GNULIB_STAT=0;
|
||||
GNULIB_UTIMENSAT=0;
|
||||
HAVE_FCHMODAT=1;
|
||||
HAVE_FSTATAT=1;
|
||||
HAVE_FUTIMENS=1;
|
||||
HAVE_LCHMOD=1;
|
||||
HAVE_LSTAT=1;
|
||||
HAVE_MKDIRAT=1;
|
||||
HAVE_MKFIFO=1;
|
||||
HAVE_MKFIFOAT=1;
|
||||
HAVE_MKNOD=1;
|
||||
HAVE_MKNODAT=1;
|
||||
HAVE_UTIMENSAT=1;
|
||||
REPLACE_FSTAT=0;
|
||||
REPLACE_FSTATAT=0;
|
||||
REPLACE_FUTIMENS=0;
|
||||
REPLACE_LSTAT=0;
|
||||
REPLACE_MKDIR=0;
|
||||
REPLACE_MKFIFO=0;
|
||||
REPLACE_MKNOD=0;
|
||||
REPLACE_STAT=0;
|
||||
REPLACE_UTIMENSAT=0;
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
|
||||
$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
|
||||
if test "${ac_cv_header_stdbool_h+set}" = set; then :
|
||||
|
@ -12640,6 +12704,48 @@ _ACEOF
|
|||
|
||||
|
||||
|
||||
if test $ac_cv_func_lstat = yes; then
|
||||
|
||||
case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
|
||||
*no)
|
||||
REPLACE_LSTAT=1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
HAVE_LSTAT=0
|
||||
fi
|
||||
|
||||
if test $REPLACE_LSTAT = 1; then
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
|
||||
|
||||
:
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB_LSTAT=1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$as_echo "#define GNULIB_TEST_LSTAT 1" >>confdefs.h
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca dirent dirfd errno fnmatch-gnu frexpl inttypes memchr memmem pathmax readlink strstr sys_stat unistd update-copyright wchar wctype-h
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca dirent dirfd errno fnmatch-gnu frexpl inttypes lstat memchr memmem pathmax readlink strstr sys_stat unistd update-copyright wchar wctype-h
|
||||
|
||||
AUTOMAKE_OPTIONS = 1.5 gnits
|
||||
|
||||
|
@ -443,6 +443,15 @@ EXTRA_DIST += config.charset ref-add.sin ref-del.sin
|
|||
|
||||
## end gnulib module localcharset
|
||||
|
||||
## begin gnulib module lstat
|
||||
|
||||
|
||||
EXTRA_DIST += lstat.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += lstat.c
|
||||
|
||||
## end gnulib module lstat
|
||||
|
||||
## begin gnulib module math
|
||||
|
||||
BUILT_SOURCES += math.h
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca dirent dirfd errno fnmatch-gnu frexpl inttypes memchr memmem pathmax readlink strstr sys_stat unistd update-copyright wchar wctype-h
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca dirent dirfd errno fnmatch-gnu frexpl inttypes lstat memchr memmem pathmax readlink strstr sys_stat unistd update-copyright wchar wctype-h
|
||||
|
||||
|
||||
|
||||
|
@ -94,6 +94,7 @@ am__aclocal_m4_deps = $(top_srcdir)/import/m4/00gnulib.m4 \
|
|||
$(top_srcdir)/import/m4/locale-ja.m4 \
|
||||
$(top_srcdir)/import/m4/locale-zh.m4 \
|
||||
$(top_srcdir)/import/m4/longlong.m4 \
|
||||
$(top_srcdir)/import/m4/lstat.m4 \
|
||||
$(top_srcdir)/import/m4/math_h.m4 \
|
||||
$(top_srcdir)/import/m4/mbrtowc.m4 \
|
||||
$(top_srcdir)/import/m4/mbsinit.m4 \
|
||||
|
@ -1032,10 +1033,11 @@ EXTRA_DIST = m4/gnulib-cache.m4 alloca.c alloca.in.h dirent.in.h \
|
|||
fnmatch.c fnmatch.in.h fnmatch_loop.c fpucw.h frexp.c frexp.c \
|
||||
frexpl.c inttypes.in.h float+.h isnan.c isnand-nolibm.h \
|
||||
isnand.c float+.h isnan.c isnanl-nolibm.h isnanl.c \
|
||||
config.charset ref-add.sin ref-del.sin math.in.h mbrtowc.c \
|
||||
mbsinit.c mbsrtowcs-impl.h mbsrtowcs-state.c mbsrtowcs.c \
|
||||
memchr.c memchr.valgrind memmem.c str-two-way.h pathmax.h \
|
||||
readlink.c $(top_srcdir)/import/extra/snippet/arg-nonnull.h \
|
||||
config.charset ref-add.sin ref-del.sin lstat.c math.in.h \
|
||||
mbrtowc.c mbsinit.c mbsrtowcs-impl.h mbsrtowcs-state.c \
|
||||
mbsrtowcs.c memchr.c memchr.valgrind memmem.c str-two-way.h \
|
||||
pathmax.h readlink.c \
|
||||
$(top_srcdir)/import/extra/snippet/arg-nonnull.h \
|
||||
$(top_srcdir)/import/extra/snippet/c++defs.h \
|
||||
$(top_srcdir)/import/extra/snippet/warn-on-use.h stat.c \
|
||||
stdbool.in.h stddef.in.h stdint.in.h streq.h string.in.h \
|
||||
|
@ -1079,7 +1081,7 @@ libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@
|
|||
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@
|
||||
EXTRA_libgnu_a_SOURCES = alloca.c dirfd.c float.c itold.c fnmatch.c \
|
||||
fnmatch_loop.c frexp.c frexp.c frexpl.c isnan.c isnand.c \
|
||||
isnan.c isnanl.c mbrtowc.c mbsinit.c mbsrtowcs-state.c \
|
||||
isnan.c isnanl.c lstat.c mbrtowc.c mbsinit.c mbsrtowcs-state.c \
|
||||
mbsrtowcs.c memchr.c memmem.c readlink.c stat.c strstr.c
|
||||
charset_alias = $(DESTDIR)$(libdir)/charset.alias
|
||||
charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
|
||||
|
@ -1157,6 +1159,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isnanl.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/itold.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbrtowc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbsinit.Po@am__quote@
|
||||
|
|
97
gdb/gnulib/import/lstat.c
Normal file
97
gdb/gnulib/import/lstat.c
Normal file
|
@ -0,0 +1,97 @@
|
|||
/* Work around a bug of lstat on some systems
|
||||
|
||||
Copyright (C) 1997-2006, 2008-2012 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/>. */
|
||||
|
||||
/* written by Jim Meyering */
|
||||
|
||||
/* If the user's config.h happens to include <sys/stat.h>, let it include only
|
||||
the system's <sys/stat.h> here, so that orig_lstat doesn't recurse to
|
||||
rpl_lstat. */
|
||||
#define __need_system_sys_stat_h
|
||||
#include <config.h>
|
||||
|
||||
#if !HAVE_LSTAT
|
||||
/* On systems that lack symlinks, our replacement <sys/stat.h> already
|
||||
defined lstat as stat, so there is nothing further to do other than
|
||||
avoid an empty file. */
|
||||
typedef int dummy;
|
||||
#else /* HAVE_LSTAT */
|
||||
|
||||
/* Get the original definition of lstat. It might be defined as a macro. */
|
||||
# include <sys/types.h>
|
||||
# include <sys/stat.h>
|
||||
# undef __need_system_sys_stat_h
|
||||
|
||||
static int
|
||||
orig_lstat (const char *filename, struct stat *buf)
|
||||
{
|
||||
return lstat (filename, buf);
|
||||
}
|
||||
|
||||
/* Specification. */
|
||||
/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
|
||||
eliminates this include because of the preliminary #include <sys/stat.h>
|
||||
above. */
|
||||
# include "sys/stat.h"
|
||||
|
||||
# include <string.h>
|
||||
# include <errno.h>
|
||||
|
||||
/* lstat works differently on Linux and Solaris systems. POSIX (see
|
||||
"pathname resolution" in the glossary) requires that programs like
|
||||
'ls' take into consideration the fact that FILE has a trailing slash
|
||||
when FILE is a symbolic link. On Linux and Solaris 10 systems, the
|
||||
lstat function already has the desired semantics (in treating
|
||||
'lstat ("symlink/", sbuf)' just like 'lstat ("symlink/.", sbuf)',
|
||||
but on Solaris 9 and earlier it does not.
|
||||
|
||||
If FILE has a trailing slash and specifies a symbolic link,
|
||||
then use stat() to get more info on the referent of FILE.
|
||||
If the referent is a non-directory, then set errno to ENOTDIR
|
||||
and return -1. Otherwise, return stat's result. */
|
||||
|
||||
int
|
||||
rpl_lstat (const char *file, struct stat *sbuf)
|
||||
{
|
||||
size_t len;
|
||||
int lstat_result = orig_lstat (file, sbuf);
|
||||
|
||||
if (lstat_result != 0)
|
||||
return lstat_result;
|
||||
|
||||
/* This replacement file can blindly check against '/' rather than
|
||||
using the ISSLASH macro, because all platforms with '\\' either
|
||||
lack symlinks (mingw) or have working lstat (cygwin) and thus do
|
||||
not compile this file. 0 len should have already been filtered
|
||||
out above, with a failure return of ENOENT. */
|
||||
len = strlen (file);
|
||||
if (file[len - 1] != '/' || S_ISDIR (sbuf->st_mode))
|
||||
return 0;
|
||||
|
||||
/* At this point, a trailing slash is only permitted on
|
||||
symlink-to-dir; but it should have found information on the
|
||||
directory, not the symlink. Call stat() to get info about the
|
||||
link's referent. Our replacement stat guarantees valid results,
|
||||
even if the symlink is not pointing to a directory. */
|
||||
if (!S_ISLNK (sbuf->st_mode))
|
||||
{
|
||||
errno = ENOTDIR;
|
||||
return -1;
|
||||
}
|
||||
return stat (file, sbuf);
|
||||
}
|
||||
|
||||
#endif /* HAVE_LSTAT */
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
|
||||
# Specification in the form of a command-line invocation:
|
||||
# gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca dirent dirfd errno fnmatch-gnu frexpl inttypes memchr memmem pathmax readlink strstr sys_stat unistd update-copyright wchar wctype-h
|
||||
# gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca dirent dirfd errno fnmatch-gnu frexpl inttypes lstat memchr memmem pathmax readlink strstr sys_stat unistd update-copyright wchar wctype-h
|
||||
|
||||
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
||||
gl_LOCAL_DIR([])
|
||||
|
@ -39,6 +39,7 @@ gl_MODULES([
|
|||
fnmatch-gnu
|
||||
frexpl
|
||||
inttypes
|
||||
lstat
|
||||
memchr
|
||||
memmem
|
||||
pathmax
|
||||
|
|
|
@ -64,6 +64,7 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module largefile:
|
||||
AC_REQUIRE([AC_SYS_LARGEFILE])
|
||||
# Code from module localcharset:
|
||||
# Code from module lstat:
|
||||
# Code from module math:
|
||||
# Code from module mbrtowc:
|
||||
# Code from module mbsinit:
|
||||
|
@ -167,6 +168,12 @@ AC_DEFUN([gl_INIT],
|
|||
gl_LOCALCHARSET
|
||||
LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
|
||||
AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
|
||||
gl_FUNC_LSTAT
|
||||
if test $REPLACE_LSTAT = 1; then
|
||||
AC_LIBOBJ([lstat])
|
||||
gl_PREREQ_LSTAT
|
||||
fi
|
||||
gl_SYS_STAT_MODULE_INDICATOR([lstat])
|
||||
gl_MATH_H
|
||||
gl_FUNC_MBRTOWC
|
||||
if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
|
||||
|
@ -407,6 +414,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/itold.c
|
||||
lib/localcharset.c
|
||||
lib/localcharset.h
|
||||
lib/lstat.c
|
||||
lib/math.c
|
||||
lib/math.in.h
|
||||
lib/mbrtowc.c
|
||||
|
@ -470,6 +478,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/locale-ja.m4
|
||||
m4/locale-zh.m4
|
||||
m4/longlong.m4
|
||||
m4/lstat.m4
|
||||
m4/math_h.m4
|
||||
m4/mbrtowc.m4
|
||||
m4/mbsinit.m4
|
||||
|
|
73
gdb/gnulib/import/m4/lstat.m4
Normal file
73
gdb/gnulib/import/m4/lstat.m4
Normal file
|
@ -0,0 +1,73 @@
|
|||
# serial 26
|
||||
|
||||
# Copyright (C) 1997-2001, 2003-2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Jim Meyering.
|
||||
|
||||
AC_DEFUN([gl_FUNC_LSTAT],
|
||||
[
|
||||
AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
|
||||
dnl If lstat does not exist, the replacement <sys/stat.h> does
|
||||
dnl "#define lstat stat", and lstat.c is a no-op.
|
||||
AC_CHECK_FUNCS_ONCE([lstat])
|
||||
if test $ac_cv_func_lstat = yes; then
|
||||
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
|
||||
case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
|
||||
*no)
|
||||
REPLACE_LSTAT=1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
HAVE_LSTAT=0
|
||||
fi
|
||||
])
|
||||
|
||||
# Prerequisites of lib/lstat.c.
|
||||
AC_DEFUN([gl_PREREQ_LSTAT], [:])
|
||||
|
||||
AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
|
||||
[
|
||||
dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it
|
||||
dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ.
|
||||
AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
|
||||
[gl_cv_func_lstat_dereferences_slashed_symlink],
|
||||
[rm -f conftest.sym conftest.file
|
||||
echo >conftest.file
|
||||
if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[AC_INCLUDES_DEFAULT],
|
||||
[[struct stat sbuf;
|
||||
/* Linux will dereference the symlink and fail, as required by
|
||||
POSIX. That is better in the sense that it means we will not
|
||||
have to compile and use the lstat wrapper. */
|
||||
return lstat ("conftest.sym/", &sbuf) == 0;
|
||||
]])],
|
||||
[gl_cv_func_lstat_dereferences_slashed_symlink=yes],
|
||||
[gl_cv_func_lstat_dereferences_slashed_symlink=no],
|
||||
[case "$host_os" in
|
||||
# Guess yes on glibc systems.
|
||||
*-gnu*) gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
|
||||
# If we don't know, assume the worst.
|
||||
*) gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
|
||||
esac
|
||||
])
|
||||
else
|
||||
# If the 'ln -s' command failed, then we probably don't even
|
||||
# have an lstat function.
|
||||
gl_cv_func_lstat_dereferences_slashed_symlink="guessing no"
|
||||
fi
|
||||
rm -f conftest.sym conftest.file
|
||||
])
|
||||
case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
|
||||
*yes)
|
||||
AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
|
||||
[Define to 1 if 'lstat' dereferences a symlink specified
|
||||
with a trailing slash.])
|
||||
;;
|
||||
esac
|
||||
])
|
|
@ -37,6 +37,7 @@ IMPORTED_GNULIB_MODULES="\
|
|||
fnmatch-gnu \
|
||||
frexpl \
|
||||
inttypes \
|
||||
lstat \
|
||||
memchr \
|
||||
memmem \
|
||||
pathmax \
|
||||
|
|
Loading…
Add table
Reference in a new issue