* syscalls.cc (internal_setlocale): Only convert $PATH if there is a
$PATH.
This commit is contained in:
		| @@ -1,3 +1,8 @@ | ||||
| 2009-10-19  Corinna Vinschen  <corinna@vinschen.de> | ||||
|  | ||||
| 	* syscalls.cc (internal_setlocale): Only convert $PATH if there is a | ||||
| 	$PATH. | ||||
|  | ||||
| 2009-10-19  Corinna Vinschen  <corinna@vinschen.de> | ||||
|  | ||||
| 	* spawn.cc (av::fixup): Treat non-readable, but executable files as | ||||
|   | ||||
| @@ -4242,13 +4242,17 @@ internal_setlocale () | ||||
|   /* FIXME: It could be necessary to convert the entire environment, | ||||
| 	    not just PATH. */ | ||||
|   tmp_pathbuf tp; | ||||
|   wchar_t *w_path, *w_cwd; | ||||
|   char *path = getenv ("PATH"); | ||||
|   wchar_t *w_path = NULL, *w_cwd; | ||||
|  | ||||
|   debug_printf ("Cygwin charset changed from %s to %s", | ||||
| 		cygheap->locale.charset, __locale_charset ()); | ||||
|   /* Fetch CWD and PATH and convert to wchar_t in previous charset. */ | ||||
|   w_path = tp.w_get (); | ||||
|   sys_mbstowcs (w_path, 32768, getenv ("PATH")); | ||||
|   /* Fetch PATH and CWD and convert to wchar_t in previous charset. */ | ||||
|   if (path && *path)	/* $PATH can be potentially unset. */ | ||||
|     { | ||||
|       w_path = tp.w_get (); | ||||
|       sys_mbstowcs (w_path, 32768, path); | ||||
|     } | ||||
|   w_cwd = tp.w_get (); | ||||
|   cwdstuff::cwd_lock.acquire (); | ||||
|   sys_mbstowcs (w_cwd, 32768, cygheap->cwd.get_posix ()); | ||||
| @@ -4259,9 +4263,12 @@ internal_setlocale () | ||||
|   /* Restore CWD and PATH in new charset. */ | ||||
|   cygheap->cwd.reset_posix (w_cwd); | ||||
|   cwdstuff::cwd_lock.release (); | ||||
|   char *c_path = tp.c_get (); | ||||
|   sys_wcstombs (c_path, 32768, w_path); | ||||
|   setenv ("PATH", c_path, 1); | ||||
|   if (w_path) | ||||
|     { | ||||
|       char *c_path = tp.c_get (); | ||||
|       sys_wcstombs (c_path, 32768, w_path); | ||||
|       setenv ("PATH", c_path, 1); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /* Called from dll_crt0_1, before calling the application's main(). | ||||
|   | ||||
		Reference in New Issue
	
	Block a user