OSDN Git Service

* path.cc (path_conv::check): Set fileattr to INVALID_FILE_ATTRIBUTES for
authorcgf <cgf>
Fri, 31 May 2002 03:11:20 +0000 (03:11 +0000)
committercgf <cgf>
Fri, 31 May 2002 03:11:20 +0000 (03:11 +0000)
nonexistent virtual device path.
(chdir): Set correct errno when attempt is made to cd to nonexistent virtual
device path.

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

index f3ccf01..ee7c10d 100644 (file)
@@ -1,5 +1,12 @@
 2002-05-30  Christopher Faylor  <cgf@redhat.com>
 
+       * path.cc (path_conv::check): Set fileattr to INVALID_FILE_ATTRIBUTES
+       for nonexistent virtual device path.
+       (chdir): Set correct errno when attempt is made to cd to nonexistent
+       virtual device path.
+
+2002-05-30  Christopher Faylor  <cgf@redhat.com>
+
        * fhandler_disk_file.cc (fhandler_disk_file::fstat): Always call
        fstat_by_name if fd is not opened to allow fstat_by_name to properly
        set errno.
index 722b51f..9aa968b 100644 (file)
@@ -536,9 +536,12 @@ path_conv::check (const char *src, unsigned opt,
                  case 2:
                    fileattr = FILE_ATTRIBUTE_DIRECTORY;
                    break;
-                 default:
                  case -1:
                    fileattr = 0;
+                   break;
+                 default:
+                   fileattr = INVALID_FILE_ATTRIBUTES;
+                   break;
                }
              delete fh;
              goto out;
@@ -3304,6 +3307,11 @@ chdir (const char *in_dir)
   int devn = path.get_devn();
   if (!isvirtual_dev (devn))
     res = SetCurrentDirectory (native_dir) ? 0 : -1;
+  else if (!path.exists ())
+    {
+      set_errno (ENOENT);
+      return -1;
+    }
   else
     {
       native_dir = "c:\\";