From 48372ea6f139576feaccd942d7674d06abd3c396 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sun, 14 Oct 2001 15:49:13 +0000 Subject: [PATCH] * dtable.cc (dtable::build_fhandler_from_name): Use PC_FULL to determine path name. * fork.cc (fork_parent): Correct the "unable to allocate forker_finished event" error message. It named the wrong event before. --- winsup/cygwin/ChangeLog | 10 ++++++++++ winsup/cygwin/dtable.cc | 2 +- winsup/cygwin/fork.cc | 2 +- winsup/cygwin/path.cc | 16 ---------------- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 446de968f..c2dda0be4 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,13 @@ +2001-10-14 Christopher Faylor + + * dtable.cc (dtable::build_fhandler_from_name): Use PC_FULL to + determine path name. + +Sun Oct 14 08:10:12 2001 Gary R. Van Sickle + + * fork.cc (fork_parent): Correct the "unable to allocate + forker_finished event" error message. It named the wrong event before. + 2001-10-13 Christopher Faylor * autoload.cc (load_wsock32): Declare dummy function to force loading diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index e63bad970..ff1b0f065 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -244,7 +244,7 @@ fhandler_base * dtable::build_fhandler_from_name (int fd, const char *name, HANDLE handle, path_conv& pc, unsigned opt, suffix_info *si) { - pc.check (name, opt | PC_NULLEMPTY, si); + pc.check (name, opt | PC_NULLEMPTY | PC_FULL, si); if (pc.error) { set_errno (pc.error); diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 0fa70814c..9bc5bd837 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -422,7 +422,7 @@ fork_parent (HANDLE& hParent, dll *&first_dll, { CloseHandle (hParent); CloseHandle (subproc_ready); - system_printf ("unable to allocate subproc_ready event, %E"); + system_printf ("unable to allocate forker_finished event, %E"); return -1; } diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index cb05f1a2b..59b0d59df 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3146,22 +3146,6 @@ fchdir (int fd) } SetResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "fchdir"); int ret = chdir (cygheap->fdtab[fd]->get_name ()); - if (ret == 0) - { - /* The name in the fhandler is explicitely overwritten with the full path. - Otherwise fchmod() to a path originally given as a relative path could - end up in a completely different directory. Imagine: - - fd = open (".."); - fchmod(fd); - fchmod(fd); - - The 2nd fchmod should chdir to the same dir as the first call, not - to it's parent dir. */ - char posix_path[MAX_PATH]; - cygheap->fdtab.reset_unix_path_name (fd, cygheap->cwd.get (posix_path, 1, 1)); - } - ReleaseResourceLock (LOCK_FD_LIST, WRITE_LOCK | READ_LOCK, "fchdir"); syscall_printf ("%d = fchdir (%d)", ret, fd); return ret;