diff options
author | Christopher Faylor <me@cgf.cx> | 2000-03-29 01:49:16 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-03-29 01:49:16 +0400 |
commit | d29b6111a5517d528bdaebfbd850c7e9471b41ae (patch) | |
tree | 40a8fe5f7a5e6690323d9c9c8e5e8b405970e7a8 /winsup/cygwin/path.cc | |
parent | 1b3755ec07c5011c315783fbb4813a9d37e4dba3 (diff) |
* Makefile.in: Use default rules when compiling cygrun.o.
* dcrt0.cc (host_dependent_constants::init): Limit non-NT platforms to 32K
chunks when copying regions during a fork.
* path.cc (symlink_check_one): Add temporary debugging output. Simplify
PATH_EXEC test.
* syscalls.cc (stat_suffixes): Null terminate this list.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 6a18dc1ff..a58a1b445 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2164,12 +2164,10 @@ symlink_check_one (const char *in_path, char *buf, int buflen, DWORD& fileattr, if (fileattr & FILE_ATTRIBUTE_DIRECTORY) unixattr |= S_IFDIR; - if (! get_file_attribute (TRUE, path, &unixattr)) + if (!get_file_attribute (TRUE, path, &unixattr)) { if (unixattr & STD_XBITS) *pflags |= PATH_EXEC; - if (! S_ISLNK (unixattr)) - ; } /* Open the file. */ @@ -2177,6 +2175,8 @@ symlink_check_one (const char *in_path, char *buf, int buflen, DWORD& fileattr, h = CreateFileA (path, GENERIC_READ, FILE_SHARE_READ, &sec_none_nih, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); +syscall_printf ("opened '%s'(%p)", path, h); + res = -1; if (h == INVALID_HANDLE_VALUE) __seterrno (); @@ -2185,6 +2185,7 @@ symlink_check_one (const char *in_path, char *buf, int buflen, DWORD& fileattr, char cookie_buf[sizeof (SYMLINK_COOKIE) - 1]; DWORD got; +syscall_printf ("ReadFile"); if (! ReadFile (h, cookie_buf, sizeof (cookie_buf), &got, 0)) set_errno (EIO); else if (got == sizeof (cookie_buf) @@ -2215,24 +2216,24 @@ symlink_check_one (const char *in_path, char *buf, int buflen, DWORD& fileattr, && memcmp (cookie_buf, SOCKET_COOKIE, sizeof (cookie_buf)) == 0) { - res = 0; *pflags |= PATH_SOCKET; goto close_and_return; } - else if (*pflags & PATH_EXEC) - goto close_and_return; - else if (!(*pflags & PATH_EXEC)) + else { /* Not a symlink, see if executable. */ - if (got >= 2 && + if (!(*pflags & PATH_EXEC) && got >= 2 && ((cookie_buf[0] == '#' && cookie_buf[1] == '!') || (cookie_buf[0] == ':' && cookie_buf[1] == '\n'))) *pflags |= PATH_EXEC; - close_and_return: + close_and_return: +syscall_printf ("close_and_return"); CloseHandle (h); goto file_not_symlink; } } + +syscall_printf ("breaking from loop"); CloseHandle (h); break; } @@ -2241,6 +2242,7 @@ symlink_check_one (const char *in_path, char *buf, int buflen, DWORD& fileattr, file_not_symlink: set_errno (EINVAL); + syscall_printf ("not a symlink"); if (ext_here) strcpy (buf, ext_here); res = 0; |