* path.h (enum path_types): Drop definition of PATH_64BITEXEC.
(path_conv::iscygexec32): Drop unused inline function. (path_conv::iscygexec64): Ditto. (path_conv::set_cygexec): Remove unnecessary setting of PATH_64BITEXEC. * spawn.cc (child_info_spawn::worker): Disable setting of STARTUPINFOW::lpReserved2 and STARTUPINFOW::cbReserved2 for non-Cygwin child processes. Explain why.
This commit is contained in:
parent
20b311fd8e
commit
10822894db
|
@ -1,3 +1,13 @@
|
||||||
|
2013-08-23 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* path.h (enum path_types): Drop definition of PATH_64BITEXEC.
|
||||||
|
(path_conv::iscygexec32): Drop unused inline function.
|
||||||
|
(path_conv::iscygexec64): Ditto.
|
||||||
|
(path_conv::set_cygexec): Remove unnecessary setting of PATH_64BITEXEC.
|
||||||
|
* spawn.cc (child_info_spawn::worker): Disable setting of
|
||||||
|
STARTUPINFOW::lpReserved2 and STARTUPINFOW::cbReserved2 for non-Cygwin
|
||||||
|
child processes. Explain why.
|
||||||
|
|
||||||
2013-08-21 Corinna Vinschen <corinna@vinschen.de>
|
2013-08-21 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* fhandler_tape.cc (mtinfo_drive::create_partitions): Allow partitioning
|
* fhandler_tape.cc (mtinfo_drive::create_partitions): Allow partitioning
|
||||||
|
|
|
@ -87,8 +87,7 @@ enum path_types
|
||||||
PATH_TEXT = 0x02000000,
|
PATH_TEXT = 0x02000000,
|
||||||
PATH_REP = 0x04000000,
|
PATH_REP = 0x04000000,
|
||||||
PATH_HAS_SYMLINKS = 0x10000000,
|
PATH_HAS_SYMLINKS = 0x10000000,
|
||||||
PATH_SOCKET = 0x40000000,
|
PATH_SOCKET = 0x40000000
|
||||||
PATH_64BITEXEC = 0x80000000
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class symlink_info;
|
class symlink_info;
|
||||||
|
@ -190,12 +189,6 @@ class path_conv
|
||||||
int is_lnk_special () const {return is_fs_device () || isfifo () || is_lnk_symlink ();}
|
int is_lnk_special () const {return is_fs_device () || isfifo () || is_lnk_symlink ();}
|
||||||
int issocket () const {return dev.is_device (FH_UNIX);}
|
int issocket () const {return dev.is_device (FH_UNIX);}
|
||||||
int iscygexec () const {return path_flags & PATH_CYGWIN_EXEC;}
|
int iscygexec () const {return path_flags & PATH_CYGWIN_EXEC;}
|
||||||
int iscygexec32 () const
|
|
||||||
{return (path_flags & (PATH_CYGWIN_EXEC | PATH_64BITEXEC))
|
|
||||||
== PATH_CYGWIN_EXEC;}
|
|
||||||
int iscygexec64 () const
|
|
||||||
{return (path_flags & (PATH_CYGWIN_EXEC | PATH_64BITEXEC))
|
|
||||||
== (PATH_CYGWIN_EXEC | PATH_64BITEXEC);}
|
|
||||||
int isopen () const {return path_flags & PATH_OPEN;}
|
int isopen () const {return path_flags & PATH_OPEN;}
|
||||||
int isctty_capable () const {return path_flags & PATH_CTTY;}
|
int isctty_capable () const {return path_flags & PATH_CTTY;}
|
||||||
void set_cygexec (bool isset)
|
void set_cygexec (bool isset)
|
||||||
|
@ -208,11 +201,7 @@ class path_conv
|
||||||
void set_cygexec (void *target)
|
void set_cygexec (void *target)
|
||||||
{
|
{
|
||||||
if (target)
|
if (target)
|
||||||
{
|
path_flags |= PATH_CYGWIN_EXEC;
|
||||||
path_flags |= PATH_CYGWIN_EXEC;
|
|
||||||
if (target == (void *) 64)
|
|
||||||
path_flags |= PATH_64BITEXEC;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
path_flags &= ~PATH_CYGWIN_EXEC;
|
path_flags &= ~PATH_CYGWIN_EXEC;
|
||||||
}
|
}
|
||||||
|
|
|
@ -554,8 +554,17 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv,
|
||||||
__stdout = in__stdout;
|
__stdout = in__stdout;
|
||||||
record_children ();
|
record_children ();
|
||||||
|
|
||||||
si.lpReserved2 = (LPBYTE) this;
|
/* Don't propagate the child_info_spawn structure to the process if it
|
||||||
si.cbReserved2 = sizeof (*this);
|
hasn't been recognized as a Cygwin executable. This also covers Cygwin
|
||||||
|
executables of a different target (32 vs. 64 bit). Native processes
|
||||||
|
usually still work, even if lpReserved2 contains garbage from their
|
||||||
|
point of view, but Cygwin processes of different bitsize will recognize
|
||||||
|
it as Cygwin info and get all excited about the differences. */
|
||||||
|
if (real_path.iscygexec ())
|
||||||
|
{
|
||||||
|
si.lpReserved2 = (LPBYTE) this;
|
||||||
|
si.cbReserved2 = sizeof (*this);
|
||||||
|
}
|
||||||
|
|
||||||
/* Depends on set call above.
|
/* Depends on set call above.
|
||||||
Some file types might need extra effort in the parent after CreateProcess
|
Some file types might need extra effort in the parent after CreateProcess
|
||||||
|
|
Loading…
Reference in New Issue