Commit Graph

4 Commits

Author SHA1 Message Date
Joerg Wunsch d7a28702a3 Make window(1) actually work again. It has been broken for quite some
time now.

For whatever reason, the kernel seems to have generated SIGIOs
previously without an initial fcntl(...,F_SETOWN), but does no longer.
This caused window(1) to wait indefinitely for input.

Also, undo rev 1.3 of wwspawn.c, it was not well-thought, and
apparently not even tested at all.  The blindly (even in a nonsensical
place like the comment on top of the function) applied replacement of
vfork() by fork() totally ignored that window(1) *does* abuse the
feature of vfork() where a modification of the parent's address space
is possible (in this case, to notify the parent of an erred exec*).
Also, with vfork(), it is guaranteed that the parent is only woken up
after the exec*() happened, where the replacement by fork() made the
parent to almost always become runnable again before the child, in
which case the parent simply told `subprocess died'.  Unfortunately,
working around _this_ seems to be a lot more of redesign work compared
to little gained value, so i think relying on the specifics of vfork()
is the simpler way.

Submitted by:	Philipp Mergenthaler <un1i@rz.uni-karlsruhe.de>
1999-03-02 19:08:09 +00:00
Dag-Erling Smørgrav 202bab3944 One vfork() changed to fork(); one execl() changed to execv(). The
latter isn't actually called as far as I can see since FreeBSD uses
termcap and not terminfo.
1998-10-13 15:14:37 +00:00
Doug Rabson f1598784ae Use <signal.h> instead of <sys/signal.h>. 1998-08-05 09:01:29 +00:00
Rodney W. Grimes 9b50d90275 BSD 4.4 Lite Usr.bin Sources 1994-05-27 12:33:43 +00:00