Michael Schröder
0ca7ac6a7d
from the pipe - move desktop.attr to update-desktop-files OBS-URL: https://build.opensuse.org/package/show/Base:System/rpm?expand=0&rev=127
38 lines
1.2 KiB
Diff
38 lines
1.2 KiB
Diff
--- build/rpmfc.c.orig 2011-06-06 11:27:32.000000000 +0000
|
|
+++ build/rpmfc.c 2011-06-09 08:30:25.000000000 +0000
|
|
@@ -165,12 +165,14 @@ static int sigpipe_init(void)
|
|
fcntl(_sigpipe[1], F_SETFD, (fcntl(_sigpipe[1], F_GETFD)|FD_CLOEXEC));
|
|
/* XXX SIGPIPE too, but NSPR disables it already, dont mess with it */
|
|
signal(SIGCHLD, sigpipe_handler);
|
|
+ signal(SIGPIPE, SIG_IGN);
|
|
return _sigpipe[0];
|
|
}
|
|
|
|
static void sigpipe_finish(void)
|
|
{
|
|
signal(SIGCHLD, SIG_DFL);
|
|
+ signal(SIGPIPE, SIG_DFL);
|
|
close(_sigpipe[0]);
|
|
close(_sigpipe[1]);
|
|
_sigpipe[0] = -1;
|
|
@@ -290,6 +292,7 @@ static StringBuf getOutputFrom(ARGV_t ar
|
|
if (FD_ISSET(fromProg[0], &ibits)) {
|
|
int nbr = read(fromProg[0], buf, sizeof(buf)-1);
|
|
if (nbr < 0 && errno == EINTR) continue;
|
|
+ if (nbr == 0) break; /* EOF, we're done */
|
|
if (nbr < 0) {
|
|
myerrno = errno;
|
|
break;
|
|
@@ -298,10 +301,9 @@ static StringBuf getOutputFrom(ARGV_t ar
|
|
appendStringBuf(readBuff, buf);
|
|
}
|
|
|
|
- /* Child exited, we're done */
|
|
+ /* Child exited, we're maybe done */
|
|
if (FD_ISSET(sigpipe, &ibits)) {
|
|
while (read(sigpipe, buf, sizeof(buf)) > 0) {};
|
|
- break;
|
|
}
|
|
}
|
|
|