Revert r228521: sometimes job output is lost

(see tools/regression/usr.bin/make/execution/joberr test).

openpty(fd + 0, fd + 1,...) version does not have this problem but
it sometimes enters an infinite sleep in "ttywait" state in tty_drain()
when make(1) closes slave pty.
This commit is contained in:
Max Khon 2011-12-15 06:25:19 +00:00
parent 548f8e2d41
commit 94f176ebd4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=228525
2 changed files with 2 additions and 10 deletions

View File

@ -7,8 +7,6 @@ CFLAGS+=-I${.CURDIR}
SRCS= arch.c buf.c cond.c dir.c for.c hash.c hash_tables.c job.c \
lst.c main.c make.c parse.c proc.c shell.c str.c suff.c targ.c \
util.c var.c
DPADD= ${LIBUTIL}
LDADD= -lutil
NO_SHARED?= YES

View File

@ -115,7 +115,6 @@ __FBSDID("$FreeBSD$");
#include <fcntl.h>
#include <inttypes.h>
#include <limits.h>
#include <libutil.h>
#include <paths.h>
#include <string.h>
#include <signal.h>
@ -1799,13 +1798,8 @@ JobStart(GNode *gn, int flags, Job *previous)
if (usePipes) {
int fd[2];
if (isatty(1)) {
if (openpty(fd + 1, fd + 0, NULL, NULL, NULL) == -1)
Punt("Cannot open pty: %s", strerror(errno));
} else {
if (pipe(fd) == -1)
Punt("Cannot create pipe: %s", strerror(errno));
}
if (pipe(fd) == -1)
Punt("Cannot create pipe: %s", strerror(errno));
job->inPipe = fd[0];
job->outPipe = fd[1];
fcntl(job->inPipe, F_SETFD, 1);