* cygheap.cc (init_cygheap::init_installation_root): Create content of
installation_dir as non-prefixed path, if possible.
This commit is contained in:
parent
d5b68452aa
commit
5da7a22be0
|
@ -1,3 +1,8 @@
|
|||
2014-10-29 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* cygheap.cc (init_cygheap::init_installation_root): Create content of
|
||||
installation_dir as non-prefixed path, if possible.
|
||||
|
||||
2014-10-29 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* common.din (__cxa_atexit): Define as cygwin__cxa_atexit.
|
||||
|
|
|
@ -130,7 +130,7 @@ init_cygheap::close_ctty ()
|
|||
cygcheck can print the paths into which the Cygwin DLL has been
|
||||
installed for debugging purposes.
|
||||
|
||||
Last but not least, the new cygwin properties datastrcuture is checked
|
||||
Last but not least, the new cygwin properties datastructure is checked
|
||||
for the "disabled_key" value, which is used to determine whether the
|
||||
installation key is actually added to all object names or not. This is
|
||||
used as a last resort for debugging purposes, usually. However, there
|
||||
|
@ -140,6 +140,8 @@ init_cygheap::close_ctty ()
|
|||
void
|
||||
init_cygheap::init_installation_root ()
|
||||
{
|
||||
ptrdiff_t len = 0;
|
||||
|
||||
if (!GetModuleFileNameW (cygwin_hmodule, installation_root, PATH_MAX))
|
||||
api_fatal ("Can't initialize Cygwin installation root dir.\n"
|
||||
"GetModuleFileNameW(%p, %p, %u), %E",
|
||||
|
@ -147,6 +149,7 @@ init_cygheap::init_installation_root ()
|
|||
PWCHAR p = installation_root;
|
||||
if (wcsncasecmp (p, L"\\\\", 2)) /* Normal drive letter path */
|
||||
{
|
||||
len = 4;
|
||||
memmove (p + 4, p, PATH_MAX - 4);
|
||||
p = wcpncpy (p, L"\\\\?\\", 4);
|
||||
}
|
||||
|
@ -155,6 +158,7 @@ init_cygheap::init_installation_root ()
|
|||
bool unc = false;
|
||||
if (wcsncmp (p + 2, L"?\\", 2)) /* No long path prefix, so UNC path. */
|
||||
{
|
||||
len = 6;
|
||||
memmove (p + 6, p, PATH_MAX - 6);
|
||||
p = wcpncpy (p, L"\\??\\UN", 6);
|
||||
*p = L'C';
|
||||
|
@ -189,9 +193,15 @@ init_cygheap::init_installation_root ()
|
|||
/* Copy result into installation_dir before stripping off "bin" dir and
|
||||
revert to Win32 path. This path is added to the Windows environment
|
||||
in buildenv. See there for a description. */
|
||||
installation_dir_len = wcpncpy (installation_dir, installation_root, PATH_MAX)
|
||||
installation_dir_len = wcpncpy (installation_dir, installation_root + len,
|
||||
PATH_MAX)
|
||||
- installation_dir;
|
||||
installation_dir[1] = L'\\';
|
||||
if (len == 4) /* Local path */
|
||||
;
|
||||
else if (len == 6) /* UNC path */
|
||||
installation_dir[0] = L'\\';
|
||||
else /* Long, prefixed path */
|
||||
installation_dir[1] = L'\\';
|
||||
|
||||
/* If w < p, the Cygwin DLL resides in the root dir of a drive or network
|
||||
path. In that case, if we strip off yet another backslash, the path
|
||||
|
|
Loading…
Reference in New Issue