From: Earnie B. <ea...@us...> - 2005-05-13 15:05:54
|
Update of /cvsroot/mingw/msys/rt/src/winsup/cygwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28740 Modified Files: spawn.cc ChangeLog.MSYS Log Message: * spawn.cc (spawn_guts): Avoid setting up for a MSYS dependent child when it isn't. Index: spawn.cc =================================================================== RCS file: /cvsroot/mingw/msys/rt/src/winsup/cygwin/spawn.cc,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** spawn.cc 5 Sep 2004 18:59:09 -0000 1.24 --- spawn.cc 13 May 2005 15:05:45 -0000 1.25 *************** *** 311,314 **** --- 311,315 ---- TRACE_IN; BOOL rc; + bool ismsysdep; pid_t cygpid; sigframe thisframe (mainthread); *************** *** 499,506 **** FIXME; // iscygexec needs adjusted so that it truely identifies an MSYS executable. ! if (real_path.iscygexec ()) newargv.dup_all (); ! else ! { for (int i = 0; i < newargv.argc; i++) { --- 500,508 ---- FIXME; // iscygexec needs adjusted so that it truely identifies an MSYS executable. ! if (real_path.iscygexec ()) { newargv.dup_all (); ! ismsysdep = true; ! } else { ! ismsysdep = false; for (int i = 0; i < newargv.argc; i++) { *************** *** 628,632 **** if (envblockarg) free (envblockarg); ! if (real_path.iscygexec ()) envblockarg = winenv (envp, 1); else --- 630,634 ---- if (envblockarg) free (envblockarg); ! if (ismsysdep) envblockarg = winenv (envp, 1); else *************** *** 636,642 **** char sa_buf[1024]; ! if (!hToken && cygheap->user.impersonated ! && cygheap->user.token != INVALID_HANDLE_VALUE) ! hToken = cygheap->user.token; const char *runpath = null_app_name ? NULL : (const char *) real_path; --- 638,648 ---- char sa_buf[1024]; ! if (ismsysdep) { ! if (!hToken && cygheap->user.impersonated ! && cygheap->user.token != INVALID_HANDLE_VALUE) ! hToken = cygheap->user.token; ! } else { ! hToken = NULL; ! } const char *runpath = null_app_name ? NULL : (const char *) real_path; *************** *** 647,656 **** if (!hToken) { ! ciresrv.moreinfo->uid = getuid (); ! FIXME; ! /* FIXME: This leaks a handle in the CreateProcessAsUser case since the ! child process doesn't know about cygwin_mount_h. */ ! ciresrv.mount_h = cygwin_mount_h; ! cygheap_setup_for_child (&ciresrv); rc = CreateProcess (runpath, /* image name - with full path */ one_line.buf, /* what was passed to exec */ --- 653,666 ---- if (!hToken) { ! // The native process doesn't know about MSYS structures so don't fill ! // them in for native processes. ! if (ismsysdep) { ! ciresrv.moreinfo->uid = getuid (); ! FIXME; ! /* FIXME: This leaks a handle in the CreateProcessAsUser case since the ! child process doesn't know about cygwin_mount_h. */ ! ciresrv.mount_h = cygwin_mount_h; ! cygheap_setup_for_child (&ciresrv); ! } rc = CreateProcess (runpath, /* image name - with full path */ one_line.buf, /* what was passed to exec */ *************** *** 665,668 **** --- 675,685 ---- &si, &pi); + + if (!ismsysdep) { + //FIXME: The child process needs help. The stdout handle is blocking. + //A child process that ismsysdep will execute initialization through + // methods of fork_child in fork.cc. A child process that !ismsysdep + // doesn't have the opportunity to execute the fork_child method. + } } else Index: ChangeLog.MSYS =================================================================== RCS file: /cvsroot/mingw/msys/rt/src/winsup/cygwin/ChangeLog.MSYS,v retrieving revision 1.77 retrieving revision 1.78 diff -C2 -d -r1.77 -r1.78 *** ChangeLog.MSYS 13 May 2005 11:55:04 -0000 1.77 --- ChangeLog.MSYS 13 May 2005 15:05:45 -0000 1.78 *************** *** 22,25 **** --- 22,27 ---- (tty::master_alive): Ditto. (tty::exists): Use alive instead of slave_alive. + * spawn.cc (spawn_guts): Avoid setting up for a MSYS dependent child + when it isn't. 2005.05.11 Earnie Boyd <ea...@us...> |