* spawn.cc (spawn_guts): Revert patch which treated derived cygwin programs

differently from those which are mounted with -X.  Pass extra argument to
linebuf::fromargv.
* winf.h (MAXCYGWINCMDLEN): New define.
(linebuf::finish): Add a new argument denoting when command line overflow is
ok.
(linebuf::fromargv): Ditto.
* winf.cc (linebuf::finish): Implement above change.
(linebuf::fromargv): Ditto.
This commit is contained in:
Christopher Faylor
2006-04-13 01:37:00 +00:00
parent a5eaf56817
commit 2e9d484382
4 changed files with 35 additions and 9 deletions

View File

@ -347,6 +347,7 @@ spawn_guts (const char * prog_arg, const char *const *argv,
goto out;
}
bool wascygexec = real_path.iscygexec ();
res = newargv.fixup (prog_arg, real_path, ext);
if (res)
@ -371,9 +372,9 @@ spawn_guts (const char * prog_arg, const char *const *argv,
}
else
{
if (real_path.iscygexec ())
if (wascygexec)
newargv.dup_all ();
else if (!one_line.fromargv (newargv, real_path))
else if (!one_line.fromargv (newargv, real_path, real_path.iscygexec ()))
{
res = -1;
goto out;
@ -461,6 +462,7 @@ spawn_guts (const char * prog_arg, const char *const *argv,
cygheap->fdtab.set_file_pointers_for_exec ();
ch.set (chtype, real_path.iscygexec ());
moreinfo->envp = build_env (envp, envblock, moreinfo->envc, real_path.iscygexec ());
if (!moreinfo->envp || !envblock)
{
@ -468,7 +470,6 @@ spawn_guts (const char * prog_arg, const char *const *argv,
res = -1;
goto out;
}
ch.set (chtype, real_path.iscygexec ());
ch.moreinfo = moreinfo;
si.lpReserved2 = (LPBYTE) &ch;