* 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.
This commit is contained in:
Christopher Faylor
2000-03-28 21:49:16 +00:00
parent 1b3755ec07
commit d29b6111a5
5 changed files with 26 additions and 12 deletions

View File

@ -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;