]> git.eshelyaron.com Git - emacs.git/commitdiff
Port double-slash test to z/OS
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 24 Jul 2019 18:28:48 +0000 (11:28 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 24 Jul 2019 19:11:32 +0000 (12:11 -0700)
* admin/merge-gnulib (GNULIB_MODULES): Add double-slash-root.
Emacs was already using this Gnulib module indirectly, so this
is merely noting that there is now a direct dependency.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* src/fileio.c (search_embedded_absfilename):
Use DOUBLE_SLASH_IS_DISTINCT_ROOT instead of (WINDOWSNT || CYGWIN).
Simplify.

admin/merge-gnulib
lib/gnulib.mk.in
m4/gnulib-comp.m4
src/fileio.c

index 42e9c0c86456bcd08e75ee37fc11be8acd0c24ad..50b0c762a8ffb54a0644b39bd3c2fb4e6ffc126d 100755 (executable)
@@ -31,7 +31,7 @@ GNULIB_MODULES='
   careadlinkat close-stream copy-file-range
   count-leading-zeros count-one-bits count-trailing-zeros
   crypto/md5-buffer crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
-  d-type diffseq dosname dtoastr dtotimespec dup2
+  d-type diffseq dosname double-slash-root dtoastr dtotimespec dup2
   environ execinfo explicit_bzero faccessat
   fcntl fcntl-h fdopendir
   filemode filevercmp flexmember fpieee fstatat fsusage fsync
index 85fdbd2df6fb2cfd683cb3303bd4e56cc4ca1463..79580e931ab401c20c94527437caca89f42480e6 100644 (file)
@@ -86,6 +86,7 @@
 #  d-type \
 #  diffseq \
 #  dosname \
+#  double-slash-root \
 #  dtoastr \
 #  dtotimespec \
 #  dup2 \
index d6b2009123d8f868f6db592f5d4de3a3fd18ce05..77563edc84d6eaac0131ea6503c657b9f7d58cb1 100644 (file)
@@ -70,6 +70,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module dirent:
   # Code from module dirfd:
   # Code from module dosname:
+  # Code from module double-slash-root:
   # Code from module dtoastr:
   # Code from module dtotimespec:
   # Code from module dup2:
@@ -227,6 +228,7 @@ AC_DEFUN([gl_INIT],
   gl_SHA512
   gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE
   gl_DIRENT_H
+  gl_DOUBLE_SLASH_ROOT
   gl_FUNC_DUP2
   if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
     AC_LIBOBJ([dup2])
index 4c7625cad4ac1efae5acf4656ed0e97e08653edc..e4269b96a37cf0fb868e43bfb3e6b242f65c7d0c 100644 (file)
@@ -1778,20 +1778,18 @@ get_homedir (void)
 static char *
 search_embedded_absfilename (char *nm, char *endp)
 {
-  char *p, *s;
-
-  for (p = nm + 1; p < endp; p++)
+  char *p = nm + 1;
+#ifdef DOUBLE_SLASH_IS_DISTINCT_ROOT
+  p += (IS_DIRECTORY_SEP (p[-1]) && IS_DIRECTORY_SEP (p[0])
+       && !IS_DIRECTORY_SEP (p[1]));
+#endif
+  for (; p < endp; p++)
     {
-      if (IS_DIRECTORY_SEP (p[-1])
-         && file_name_absolute_p (p)
-#if defined (WINDOWSNT) || defined (CYGWIN)
-         /* // at start of file name is meaningful in Apollo,
-            WindowsNT and Cygwin systems.  */
-         && !(IS_DIRECTORY_SEP (p[0]) && p - 1 == nm)
-#endif /* not (WINDOWSNT || CYGWIN) */
-         )
+      if (IS_DIRECTORY_SEP (p[-1]) && file_name_absolute_p (p))
        {
-         for (s = p; *s && !IS_DIRECTORY_SEP (*s); s++);
+         char *s;
+         for (s = p; *s && !IS_DIRECTORY_SEP (*s); s++)
+           continue;
          if (p[0] == '~' && s > p + 1) /* We've got "/~something/".  */
            {
              USE_SAFE_ALLOCA;