diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-02-25 12:05:36 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-02-25 12:05:36 -0800 |
commit | 36f13e1667c66073ef18c4ee3394865c3b7c6cbb (patch) | |
tree | be36845ff1a7ffadcfa590589d099fb681d019ba | |
parent | 4394ee04741d5fe2fd4cc7a7ee821e1f8a3f2d32 (diff) | |
download | emacs-36f13e1667c66073ef18c4ee3394865c3b7c6cbb.tar.gz |
Simplify symlink portability workaround.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | aclocal.m4 | 1 | ||||
-rwxr-xr-x | configure | 99 | ||||
-rw-r--r-- | lib/Makefile.in | 20 | ||||
-rw-r--r-- | lib/dosname.h | 53 | ||||
-rw-r--r-- | lib/gnulib.mk | 7 | ||||
-rw-r--r-- | lib/stat.c | 1 | ||||
-rw-r--r-- | m4/dos.m4 | 71 | ||||
-rw-r--r-- | m4/gl-comp.m4 | 4 | ||||
-rw-r--r-- | m4/stat.m4 | 3 | ||||
-rw-r--r-- | src/ChangeLog | 3 | ||||
-rw-r--r-- | src/config.in | 19 |
12 files changed, 86 insertions, 201 deletions
diff --git a/ChangeLog b/ChangeLog index d79576e3ecf..8f439f369d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2011-02-25 Paul Eggert <eggert@cs.ucla.edu> + Simplify symlink portability workaround. + * m4/dos.m4: Remove. + * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk, lib/stat.c: + * m4/gl-comp.m4, m4/stat.m4, src/config.in: Regenerate from gnulib. + * lib/dosname.h: New file, regenerated from gnulib. + * configure, lib/Makefile.in, lib/getopt_int.h, lib/gnulib.mk: * lib/stdlib.in.h, m4/stdlib_h.m4: Regenerate. diff --git a/aclocal.m4 b/aclocal.m4 index 7bc72240c80..1536f3b48b5 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -986,7 +986,6 @@ AC_SUBST([am__untar]) m4_include([m4/00gnulib.m4]) m4_include([m4/c-strtod.m4]) -m4_include([m4/dos.m4]) m4_include([m4/extensions.m4]) m4_include([m4/filemode.m4]) m4_include([m4/getloadavg.m4]) diff --git a/configure b/configure index 675cb56533d..658fac9a358 100755 --- a/configure +++ b/configure @@ -6128,6 +6128,7 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } # Code from module arg-nonnull: # Code from module c++defs: # Code from module crypto/md5: + # Code from module dosname: # Code from module dtoastr: # Code from module extensions: @@ -14687,102 +14688,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system is Windows or MSDOS" >&5 -$as_echo_n "checking whether system is Windows or MSDOS... " >&6; } -if ${ac_cv_win_or_dos+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__ -neither MSDOS nor Windows -#endif - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_win_or_dos=yes -else - ac_cv_win_or_dos=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_win_or_dos" >&5 -$as_echo "$ac_cv_win_or_dos" >&6; } - - if test x"$ac_cv_win_or_dos" = xyes; then - ac_fs_accepts_drive_letter_prefix=1 - ac_fs_backslash_is_file_name_separator=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether drive letter can start relative path" >&5 -$as_echo_n "checking whether drive letter can start relative path... " >&6; } -if ${ac_cv_drive_letter_can_be_relative+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#if defined __CYGWIN__ -drive letters are always absolute -#endif - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_drive_letter_can_be_relative=yes -else - ac_cv_drive_letter_can_be_relative=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_drive_letter_can_be_relative" >&5 -$as_echo "$ac_cv_drive_letter_can_be_relative" >&6; } - if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then - ac_fs_drive_letter_can_be_relative=1 - else - ac_fs_drive_letter_can_be_relative=0 - fi - else - ac_fs_accepts_drive_letter_prefix=0 - ac_fs_backslash_is_file_name_separator=0 - ac_fs_drive_letter_can_be_relative=0 - fi - - -cat >>confdefs.h <<_ACEOF -#define FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX $ac_fs_accepts_drive_letter_prefix -_ACEOF - - - - - -cat >>confdefs.h <<_ACEOF -#define FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR $ac_fs_backslash_is_file_name_separator -_ACEOF - - - -cat >>confdefs.h <<_ACEOF -#define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE $ac_fs_drive_letter_can_be_relative -_ACEOF - - { $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 ${ac_cv_header_stdbool_h+:} false; then : @@ -15347,6 +15252,7 @@ fi : + # Code from module dosname: # Code from module dtoastr: # Code from module extensions: @@ -16358,7 +16264,6 @@ $as_echo "#define READLINK_TRAILING_SLASH_BUG 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat handles trailing slashes on directories" >&5 $as_echo_n "checking whether stat handles trailing slashes on directories... " >&6; } if ${gl_cv_func_stat_dir_slash+:} false; then : diff --git a/lib/Makefile.in b/lib/Makefile.in index e9b9f2eb86e..04ee541a09c 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -50,10 +50,10 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ - $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/dos.m4 \ - $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/filemode.m4 \ - $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getopt.m4 \ - $(top_srcdir)/m4/gl-comp.m4 $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/extensions.m4 \ + $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/getloadavg.m4 \ + $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gl-comp.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/longlong.m4 \ $(top_srcdir)/m4/lstat.m4 $(top_srcdir)/m4/md5.m4 \ $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/multiarch.m4 \ @@ -604,12 +604,12 @@ BUILT_SOURCES = arg-nonnull.h c++defs.h $(GETOPT_H) $(STDBOOL_H) \ $(STDDEF_H) $(STDINT_H) stdlib.h sys/stat.h time.h unistd.h \ warn-on-use.h EXTRA_DIST = $(top_srcdir)/./arg-nonnull.h $(top_srcdir)/./c++defs.h \ - md5.c md5.h ftoastr.c ftoastr.h filemode.c filemode.h \ - getloadavg.c getopt.c getopt.in.h getopt1.c getopt_int.h \ - intprops.h lstat.c mktime-internal.h mktime.c readlink.c \ - stat.c stdbool.in.h stddef.in.h stdint.in.h stdlib.in.h \ - strftime.c strftime.h symlink.c sys_stat.in.h time.in.h \ - time_r.c unistd.in.h $(top_srcdir)/./warn-on-use.h + md5.c md5.h dosname.h ftoastr.c ftoastr.h filemode.c \ + filemode.h getloadavg.c getopt.c getopt.in.h getopt1.c \ + getopt_int.h intprops.h lstat.c mktime-internal.h mktime.c \ + readlink.c stat.c stdbool.in.h stddef.in.h stdint.in.h \ + stdlib.in.h strftime.c strftime.h symlink.c sys_stat.in.h \ + time.in.h time_r.c unistd.in.h $(top_srcdir)/./warn-on-use.h MOSTLYCLEANDIRS = sys MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \ c++defs.h c++defs.h-t getopt.h getopt.h-t stdbool.h \ diff --git a/lib/dosname.h b/lib/dosname.h new file mode 100644 index 00000000000..acdd03b156e --- /dev/null +++ b/lib/dosname.h @@ -0,0 +1,53 @@ +/* File names on MS-DOS/Windows systems. + + Copyright (C) 2000-2001, 2004-2006, 2009-2011 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/>. + + From Paul Eggert and Jim Meyering. */ + +#ifndef _DOSNAME_H +#define _DOSNAME_H + +#if (defined _WIN32 || defined __WIN32__ || \ + defined __MSDOS__ || defined __CYGWIN__ || \ + defined __EMX__ || defined __DJGPP__) + /* This internal macro assumes ASCII, but all hosts that support drive + letters use ASCII. */ +# define _IS_DRIVE_LETTER(C) (((unsigned int) (C) | ('a' - 'A')) - 'a' \ + <= 'z' - 'a') +# define FILE_SYSTEM_PREFIX_LEN(Filename) \ + (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0) +# ifndef __CYGWIN__ +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 +# endif +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#else +# define FILE_SYSTEM_PREFIX_LEN(Filename) 0 +# define ISSLASH(C) ((C) == '/') +#endif + +#ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 +#endif + +#if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE +# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)]) +# else +# define IS_ABSOLUTE_FILE_NAME(F) \ + (ISSLASH ((F)[0]) || FILE_SYSTEM_PREFIX_LEN (F) != 0) +#endif +#define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F)) + +#endif /* DOSNAME_H_ */ diff --git a/lib/gnulib.mk b/lib/gnulib.mk index 1d918ff5fae..b5fd4a358db 100644 --- a/lib/gnulib.mk +++ b/lib/gnulib.mk @@ -78,6 +78,13 @@ EXTRA_libgnu_a_SOURCES += md5.c ## end gnulib module crypto/md5 +## begin gnulib module dosname + + +EXTRA_DIST += dosname.h + +## end gnulib module dosname + ## begin gnulib module dtoastr libgnu_a_SOURCES += dtoastr.c diff --git a/lib/stat.c b/lib/stat.c index f16d9144afc..cbc9100fd4d 100644 --- a/lib/stat.c +++ b/lib/stat.c @@ -37,6 +37,7 @@ orig_stat (const char *filename, struct stat *buf) #include <limits.h> #include <stdbool.h> #include <string.h> +#include "dosname.h" /* Store information about NAME into ST. Work around bugs with trailing slashes. Mingw has other bugs (such as st_ino always diff --git a/m4/dos.m4 b/m4/dos.m4 deleted file mode 100644 index ed9c4cee670..00000000000 --- a/m4/dos.m4 +++ /dev/null @@ -1,71 +0,0 @@ -#serial 11 -*- autoconf -*- - -# Define some macros required for proper operation of code in lib/*.c -# on MSDOS/Windows systems. - -# Copyright (C) 2000-2001, 2004-2006, 2009-2011 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. - -# From Jim Meyering. - -AC_DEFUN([gl_AC_DOS], - [ - AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos], - [ - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ -#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__ -neither MSDOS nor Windows -#endif]])], - [ac_cv_win_or_dos=yes], - [ac_cv_win_or_dos=no]) - ]) - - if test x"$ac_cv_win_or_dos" = xyes; then - ac_fs_accepts_drive_letter_prefix=1 - ac_fs_backslash_is_file_name_separator=1 - AC_CACHE_CHECK([whether drive letter can start relative path], - [ac_cv_drive_letter_can_be_relative], - [ - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ -#if defined __CYGWIN__ -drive letters are always absolute -#endif]])], - [ac_cv_drive_letter_can_be_relative=yes], - [ac_cv_drive_letter_can_be_relative=no]) - ]) - if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then - ac_fs_drive_letter_can_be_relative=1 - else - ac_fs_drive_letter_can_be_relative=0 - fi - else - ac_fs_accepts_drive_letter_prefix=0 - ac_fs_backslash_is_file_name_separator=0 - ac_fs_drive_letter_can_be_relative=0 - fi - - AC_DEFINE_UNQUOTED([FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX], - $ac_fs_accepts_drive_letter_prefix, - [Define on systems for which file names may have a so-called - `drive letter' prefix, define this to compute the length of that - prefix, including the colon.]) - - AH_VERBATIM(ISSLASH, - [#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR -# define ISSLASH(C) ((C) == '/' || (C) == '\\') -#else -# define ISSLASH(C) ((C) == '/') -#endif]) - - AC_DEFINE_UNQUOTED([FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR], - $ac_fs_backslash_is_file_name_separator, - [Define if the backslash character may also serve as a file name - component separator.]) - - AC_DEFINE_UNQUOTED([FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE], - $ac_fs_drive_letter_can_be_relative, - [Define if a drive letter prefix denotes a relative path if it is - not followed by a file name component separator.]) - ]) diff --git a/m4/gl-comp.m4 b/m4/gl-comp.m4 index c495389af8f..8bf5a64a5f9 100644 --- a/m4/gl-comp.m4 +++ b/m4/gl-comp.m4 @@ -29,6 +29,7 @@ AC_DEFUN([gl_EARLY], # Code from module arg-nonnull: # Code from module c++defs: # Code from module crypto/md5: + # Code from module dosname: # Code from module dtoastr: # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) @@ -78,6 +79,7 @@ AC_DEFUN([gl_INIT], # Code from module c++defs: # Code from module crypto/md5: gl_MD5 + # Code from module dosname: # Code from module dtoastr: AC_REQUIRE([gl_C99_STRTOLD]) # Code from module extensions: @@ -279,6 +281,7 @@ AC_DEFUN([gl_FILE_LIST], [ build-aux/arg-nonnull.h build-aux/c++defs.h build-aux/warn-on-use.h + lib/dosname.h lib/dtoastr.c lib/filemode.c lib/filemode.h @@ -312,7 +315,6 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unistd.in.h m4/00gnulib.m4 m4/c-strtod.m4 - m4/dos.m4 m4/extensions.m4 m4/filemode.m4 m4/getloadavg.m4 diff --git a/m4/stat.m4 b/m4/stat.m4 index 4883fe25eea..27f82d5a91a 100644 --- a/m4/stat.m4 +++ b/m4/stat.m4 @@ -1,4 +1,4 @@ -# serial 6 +# serial 7 # Copyright (C) 2009-2011 Free Software Foundation, Inc. # @@ -9,7 +9,6 @@ AC_DEFUN([gl_FUNC_STAT], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - AC_REQUIRE([gl_AC_DOS]) AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([lstat]) dnl mingw is the only known platform where stat(".") and stat("./") differ diff --git a/src/ChangeLog b/src/ChangeLog index 3719b61b413..0bfadcf1a91 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2011-02-25 Paul Eggert <eggert@cs.ucla.edu> + Simplify symlink portability workaround. + * config.in: Regenerate. + * dired.c (Ffile_attributes): Increase size of modes from 10 to 12 as per recent filemodestring API change. Reported by Jonas Ă–ster in <http://lists.gnu.org/archive/html/emacs-devel/2011-02/msg01069.html>. diff --git a/src/config.in b/src/config.in index 2a2a71659f5..4e49b4df170 100644 --- a/src/config.in +++ b/src/config.in @@ -72,19 +72,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Enable expensive run-time checking of data types? */ #undef ENABLE_CHECKING -/* Define on systems for which file names may have a so-called `drive letter' - prefix, define this to compute the length of that prefix, including the - colon. */ -#undef FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX - -/* Define if the backslash character may also serve as a file name component - separator. */ -#undef FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR - -/* Define if a drive letter prefix denotes a relative path if it is not - followed by a file name component separator. */ -#undef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE - /* Define this to check for errors in cons list. */ #undef GC_CHECK_CONS_LIST @@ -907,12 +894,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ /* Define to support using a Hesiod database to find the POP server. */ #undef HESIOD -#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR -# define ISSLASH(C) ((C) == '/' || (C) == '\\') -#else -# define ISSLASH(C) ((C) == '/') -#endif - /* Define to support Kerberos-authenticated POP mail retrieval. */ #undef KERBEROS |