* 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:
		| @@ -1,3 +1,12 @@ | ||||
| Tue Mar 28 16:45:42 2000  Christopher Faylor <cgf@cygnus.com> | ||||
|  | ||||
| 	* 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. | ||||
|  | ||||
| Sat Mar 25 20:46:39 2000  Christopher Faylor <cgf@cygnus.com> | ||||
|  | ||||
| 	* path.cc (symlink_check_one): Recognize symlink settings from the | ||||
|   | ||||
| @@ -193,9 +193,9 @@ winver_stamp: mkvers.sh include/cygwin/version.h winver.rc $(DLL_OFILES) | ||||
| 	touch $@; \ | ||||
| 	$(COMPILE_CXX) -o version.o version.cc | ||||
|  | ||||
| cygrun.exe : $(srcdir)/cygrun.c $(DLL_IMPORTS) $(w32api_lib)/libuser32.a \ | ||||
| cygrun.exe : cygrun.o $(DLL_IMPORTS) $(w32api_lib)/libuser32.a \ | ||||
| 	     $(w32api_lib)/libshell32.a | ||||
| 	$(CC) -o $@ -L$(w32api_lib) $(srcdir)/cygrun.c | ||||
| 	$(CC) -o $@ -L$(w32api_lib) ${word 1,$^} | ||||
|  | ||||
| # | ||||
|  | ||||
|   | ||||
| @@ -151,6 +151,7 @@ host_dependent_constants NO_COPY host_dependent; | ||||
| void | ||||
| host_dependent_constants::init () | ||||
| { | ||||
|   extern DWORD chunksize; | ||||
|   /* fhandler_disk_file::lock needs a platform specific upper word | ||||
|      value for locking entire files. | ||||
|  | ||||
| @@ -169,6 +170,7 @@ host_dependent_constants::init () | ||||
|     case win32s: | ||||
|       win32_upper = 0x00000000; | ||||
|       shared = FILE_SHARE_READ | FILE_SHARE_WRITE; | ||||
|       chunksize = 32 * 1024 * 1024; | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -920,7 +920,8 @@ stat_dev (DWORD devn, int unit, unsigned long ino, struct stat *buf) | ||||
| static suffix_info stat_suffixes[] =  | ||||
| { | ||||
|   suffix_info ("", 1), | ||||
|   suffix_info (".exe", 1) | ||||
|   suffix_info (".exe", 1), | ||||
|   suffix_info (NULL) | ||||
| }; | ||||
|  | ||||
| /* Cygwin internal */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user