From 9cd3ed2d10e09c78c2bd3084d726b74543f07523 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 8 Nov 2007 14:37:59 +0000 Subject: [PATCH] revert premature checkin --- winsup/cygwin/dtable.cc | 81 ++++++++++----------------------------- winsup/cygwin/fhandler.cc | 3 -- winsup/cygwin/fhandler.h | 2 - winsup/cygwin/path.cc | 2 +- 4 files changed, 21 insertions(+), 67 deletions(-) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 019f8a1a6..f130a2ef7 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -41,17 +41,6 @@ static const NO_COPY DWORD std_consts[] = {STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, static const char *handle_to_fn (HANDLE, char *); -#define DEVICE_PREFIX "\\device\\" -#define DEVICE_PREFIX_LEN sizeof (DEVICE_PREFIX) - 1 -#define REMOTE "\\Device\\LanmanRedirector\\" -#define REMOTE_LEN sizeof (REMOTE) - 1 -#define REMOTE1 "\\Device\\WinDfs\\Root\\" -#define REMOTE1_LEN sizeof (REMOTE1) - 1 -#define NAMED_PIPE "\\Device\\NamedPipe\\" -#define NAMED_PIPE_LEN sizeof (NAMED_PIPE) - 1 -#define POSIX_NAMED_PIPE "/Device/NamedPipe/" -#define POSIX_NAMED_PIPE_LEN sizeof (POSIX_NAMED_PIPE) - 1 - /* Set aside space for the table of fds */ void dtable_init () @@ -294,7 +283,7 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle) else dev = *console_dev; } - else if (0 && ft == FILE_TYPE_PIPE) + else if (ft == FILE_TYPE_PIPE) { if (fd == 0) dev = *piper_dev; @@ -308,12 +297,7 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle) else { name = handle_to_fn (handle, (char *) alloca (CYG_MAX_PATH + 100)); - if (!strncasematch (name, POSIX_NAMED_PIPE, POSIX_NAMED_PIPE_LEN)) - /* nothing */; - else if (fd == 0) - dev = *piper_dev; - else - dev = *pipew_dev; + bin = 0; } } @@ -324,31 +308,25 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle) fhandler_base *fh; if (dev) - fh = build_fh_dev (dev, name); + fh = build_fh_dev (dev); else fh = build_fh_name (name); if (fh) cygheap->fdtab[fd] = fh; - if (name) + if (!bin) { - bin = fh->pc_binmode (); - if (!bin) - { - bin = fh->get_default_fmode (O_RDWR); - if (!bin && dev) - bin = O_BINARY; - } + bin = fh->get_default_fmode (O_RDWR); + if (bin) + /* nothing */; + else if (dev) + bin = O_BINARY; + else if (name != unknown_file) + bin = fh->pc_binmode (); } - DWORD access; - if (fd == 0) - access = GENERIC_READ; - else - access = GENERIC_WRITE; /* Should be rdwr for stderr but not sure that's - possible for some versions of handles */ - fh->init (handle, access, bin); + fh->init (handle, GENERIC_READ | GENERIC_WRITE, bin); set_std_handle (fd); paranoid_printf ("fd %d, handle %p", fd, handle); } @@ -847,6 +825,11 @@ dtable::vfork_child_fixup () } #endif /*NEWVFORK*/ +#define DEVICE_PREFIX "\\device\\" +#define DEVICE_PREFIX_LEN sizeof (DEVICE_PREFIX) - 1 +#define REMOTE "\\Device\\LanmanRedirector\\" +#define REMOTE_LEN sizeof (REMOTE) - 1 + static const char * handle_to_fn (HANDLE h, char *posix_fn) { @@ -861,7 +844,7 @@ handle_to_fn (HANDLE h, char *posix_fn) NTSTATUS res = NtQueryObject (h, ObjectNameInformation, ntfn, sizeof (fnbuf), NULL); - if (!NT_SUCCESS (res)) + if (NT_SUCCESS (res)) { strcpy (posix_fn, unknown_file); debug_printf ("NtQueryObject failed"); @@ -918,7 +901,6 @@ handle_to_fn (HANDLE h, char *posix_fn) } char *w32 = win32_fn; - bool justslash = false; if (maxmatchlen) { n = strlen (maxmatchdos); @@ -928,38 +910,15 @@ handle_to_fn (HANDLE h, char *posix_fn) memcpy (w32, maxmatchdos, n); w32[n] = '\\'; } - else if (strncasematch (w32, NAMED_PIPE, NAMED_PIPE_LEN)) - { - debug_printf ("pipe"); - justslash = true; - } else if (strncasematch (w32, REMOTE, REMOTE_LEN)) { w32 += REMOTE_LEN - 2; *w32 = '\\'; debug_printf ("remote drive"); - justslash = true; - } - else if (strncasematch (w32, REMOTE1, REMOTE1_LEN)) - { - w32 += REMOTE1_LEN - 2; - *w32 = '\\'; - debug_printf ("remote drive"); - justslash = true; } - if (!justslash) - cygwin_conv_to_full_posix_path (w32, posix_fn); - else - { - char *s, *d; - for (s = w32, d = posix_fn; *s; s++, d++) - if (*s == '\\') - *d = '/'; - else - *d = *s; - } - debug_printf ("derived path '%s', posix '%s'", w32, posix_fn); + debug_printf ("derived path '%s'", w32); + cygwin_conv_to_full_posix_path (w32, posix_fn); return posix_fn; } diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index a479d1b28..bc30a396c 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -1639,7 +1639,6 @@ fhandler_base::wait_overlapped (bool& res, bool writing, DWORD *bytes) switch (WaitForMultipleObjects (n, w4, false, INFINITE)) { case WAIT_OBJECT_0: - debug_printf ("normal read"); if (!bytes || GetOverlappedResult (h, get_overlapped (), bytes, false)) res = 1; @@ -1650,14 +1649,12 @@ fhandler_base::wait_overlapped (bool& res, bool writing, DWORD *bytes) } break; case WAIT_OBJECT_0 + 1: - debug_printf ("got a signal"); CancelIo (h); set_errno (EINTR); res = 0; break; default: err = GetLastError (); - debug_printf ("WFMO error, %E"); goto err; break; } diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index 45588fef9..665dd51e1 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -149,7 +149,6 @@ class fhandler_base path_conv pc; virtual void set_name (path_conv &pc); - virtual void set_name (const char *s) {pc.set_normalized_path (s, false);} int error () const {return pc.error;} void set_error (int error) {pc.error = error;} bool exists () const {return pc.exists ();} @@ -547,7 +546,6 @@ public: int __stdcall fadvise (_off64_t, _off64_t, int) __attribute__ ((regparm (3))); int __stdcall ftruncate (_off64_t, bool) __attribute__ ((regparm (3))); int ready_for_read (int fd, DWORD howlong); - void init (HANDLE, DWORD, mode_t); static int create (fhandler_pipe *[2], unsigned, int); static int create_selectable (LPSECURITY_ATTRIBUTES, HANDLE&, HANDLE&, DWORD); }; diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index d0de90ec3..a10a29339 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -543,7 +543,7 @@ path_conv::set_normalized_path (const char *path_copy, bool strip_tail) } PUNICODE_STRING -get_nt_native_path (const char *path, UNICODE_STRING& upath) +get_nt_native_path (const char *path, UNICODE_STRING &upath) { upath.Length = 0; if (path[0] == '/') /* special path w/o NT path representation. */