it in afterwards. This requires more bookkeeping than I like, though,
so we'll just do it the easy way. So, terminate any child process if
we can't actually record the pid in the internal table. */
- if (!child.remember (false))
+ if (!child.remember ())
{
this_errno = EAGAIN;
#ifdef DEBUGGING0
destroy = res ? false : true;
return res;
}
- int remember (bool detach)
+ int remember ()
{
- int res = proc_subproc (detach ? PROC_DETACHED_CHILD : PROC_ADD_CHILD,
- (uintptr_t) this);
+ int res = proc_subproc (PROC_ADD_CHILD, (uintptr_t) this);
destroy = res ? false : true;
return res;
}
set_errno (EAGAIN);
break;
}
- fallthrough;
-
- case PROC_DETACHED_CHILD:
if (vchild != myself)
{
vchild->uid = myself->uid;
vchild->ctty = myself->ctty;
vchild->cygstarted = true;
vchild->process_state |= PID_INITIALIZING;
- vchild->ppid = what == PROC_DETACHED_CHILD
- ? 1 : myself->pid; /* always set last */
+ vchild->ppid = myself->pid; /* always set last */
}
break;
child_info_spawn::wait_for_myself ()
{
postfork (myself);
- if (myself.remember (false))
+ if (myself.remember ())
myself.attach ();
WaitForSingleObject (ev, INFINITE);
}
PROC_ADD_CHILD = 1, // set up a new child
PROC_ATTACH_CHILD = 2, // attach child or reattach after exec
PROC_EXEC_CLEANUP = 3, // cleanup waiting children after exec
- PROC_DETACHED_CHILD = 4, // set up a detached child
- PROC_CLEARWAIT = 5, // clear all waits - signal arrived
- PROC_WAIT = 6, // setup for wait() for subproc
- PROC_EXECING = 7, // used to get a lock when execing
- PROC_NOTHING = 8 // nothing, really
+ PROC_CLEARWAIT = 4, // clear all waits - signal arrived
+ PROC_WAIT = 5, // setup for wait() for subproc
+ PROC_EXECING = 6, // used to get a lock when execing
+ PROC_NOTHING = 7 // nothing, really
};
struct sigpacket
child->start_time = time (NULL); /* Register child's starting time. */
child->nice = myself->nice;
postfork (child);
- if (mode == _P_DETACH
- ? !child.remember (true)
- : !(child.remember (false) && child.attach ()))
+ if (mode != _P_DETACH
+ && (!child.remember () || !child.attach ()))
{
/* FIXME: Child in strange state now */
CloseHandle (pi.hProcess);