OSDN Git Service

* path.cc (normalize_posix_path): Don't eat a '.' after a '\\' since it has
authorcgf <cgf>
Sun, 7 Oct 2001 21:16:35 +0000 (21:16 +0000)
committercgf <cgf>
Sun, 7 Oct 2001 21:16:35 +0000 (21:16 +0000)
special meaning on NT.
* syscalls.cc (access): Use stat_worker.

winsup/cygwin/ChangeLog
winsup/cygwin/path.cc
winsup/cygwin/syscalls.cc

index 665ae95..05a7f30 100644 (file)
@@ -1,3 +1,10 @@
+Sun Oct  7 17:16:05 2001  Christopher Faylor <cgf@cygnus.com>
+
+       * path.cc (normalize_posix_path): Don't eat a '.' after a '\\' since it
+       has special meaning on NT.
+
+       * syscalls.cc (access): Use stat_worker.
+
 Fri Oct  5 21:01:14 2001  Christopher Faylor <cgf@cygnus.com>
 
        * fhandler.cc (fhandler_base::fork_fixup): Protect dup'ed handle and
index 1688f08..5e00f35 100644 (file)
@@ -209,6 +209,12 @@ normalize_posix_path (const char *src, char *dst)
          *dst++ = '/';
          src = src_start + 1;
        }
+      else if (src[0] == '.' && isslash (src[1]))
+       {
+         *dst++ = '.';
+         *dst++ = '/';
+         src += 2;
+       }
     }
   else
     *dst = '\0';
@@ -934,7 +940,13 @@ normalize_win32_path (const char *src, char *dst)
   if (beg_src_slash && isdirsep (src[1]))
     {
       *dst++ = '\\';
-      ++src;
+      src++;
+      if (src[1] == '.' && isdirsep (src[2]))
+       {
+         *dst++ = '\\';
+         *dst++ = '.';
+         src += 2;
+       }
     }
   else if (strchr (src, ':') == NULL && *src != '/')
     {
index d41cb2b..ebdd767 100644 (file)
@@ -1074,7 +1074,7 @@ access (const char *fn, int flags)
 {
   sigframe thisframe (mainthread);
   // flags were incorrectly specified
-  if (flags & ~ (F_OK|R_OK|W_OK|X_OK))
+  if (flags & ~(F_OK|R_OK|W_OK|X_OK))
     {
       set_errno (EINVAL);
       return -1;
@@ -1084,7 +1084,7 @@ access (const char *fn, int flags)
     return acl_access (fn, flags);
 
   struct stat st;
-  int r = stat (fn, &st);
+  int r = stat_worker (fn, &st, 0);
   if (r)
     return -1;
   r = -1;