From 69be001ceaf6c17d42b0307d519c07c4a490e8d4 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 31 May 2002 03:11:21 +0000 Subject: [PATCH] * 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. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/path.cc | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index f3ccf013e..ee7c10d33 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2002-05-30 Christopher Faylor + + * 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 * fhandler_disk_file.cc (fhandler_disk_file::fstat): Always call diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 722b51fbe..9aa968b78 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -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:\\"; -- 2.43.5