externalpipe: sigchld changes interfere with right-click-to-plumb and opencopied patches, proposed fix ref. #27
This commit is contained in:
parent
56931acefb
commit
80bb4b8ab7
|
@ -1,3 +1,5 @@
|
||||||
|
int extpipeactive = 0;
|
||||||
|
|
||||||
void
|
void
|
||||||
#if EXTERNALPIPEIN_PATCH
|
#if EXTERNALPIPEIN_PATCH
|
||||||
extpipe(const Arg *arg, int in)
|
extpipe(const Arg *arg, int in)
|
||||||
|
@ -58,6 +60,7 @@ externalpipe(const Arg *arg)
|
||||||
close(to[1]);
|
close(to[1]);
|
||||||
/* restore */
|
/* restore */
|
||||||
signal(SIGPIPE, oldsigpipe);
|
signal(SIGPIPE, oldsigpipe);
|
||||||
|
extpipeactive = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if EXTERNALPIPEIN_PATCH
|
#if EXTERNALPIPEIN_PATCH
|
||||||
|
|
6
st.c
6
st.c
|
@ -977,7 +977,7 @@ sigchld(int a)
|
||||||
pid_t p;
|
pid_t p;
|
||||||
|
|
||||||
#if EXTERNALPIPEIN_PATCH && EXTERNALPIPE_PATCH
|
#if EXTERNALPIPEIN_PATCH && EXTERNALPIPE_PATCH
|
||||||
if ((p = waitpid(-1, &stat, WNOHANG)) < 0)
|
if ((p = waitpid((extpipeactive ? -1 : pid), &stat, WNOHANG)) < 0)
|
||||||
#else
|
#else
|
||||||
if ((p = waitpid(pid, &stat, WNOHANG)) < 0)
|
if ((p = waitpid(pid, &stat, WNOHANG)) < 0)
|
||||||
#endif // EXTERNALPIPEIN_PATCH
|
#endif // EXTERNALPIPEIN_PATCH
|
||||||
|
@ -985,11 +985,15 @@ sigchld(int a)
|
||||||
|
|
||||||
#if EXTERNALPIPE_PATCH
|
#if EXTERNALPIPE_PATCH
|
||||||
if (pid != p) {
|
if (pid != p) {
|
||||||
|
if (!extpipeactive)
|
||||||
|
return;
|
||||||
|
|
||||||
if (p == 0 && wait(&stat) < 0)
|
if (p == 0 && wait(&stat) < 0)
|
||||||
die("wait: %s\n", strerror(errno));
|
die("wait: %s\n", strerror(errno));
|
||||||
|
|
||||||
/* reinstall sigchld handler */
|
/* reinstall sigchld handler */
|
||||||
signal(SIGCHLD, sigchld);
|
signal(SIGCHLD, sigchld);
|
||||||
|
extpipeactive = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
4
st.h
4
st.h
|
@ -345,6 +345,10 @@ extern unsigned int tabspaces;
|
||||||
extern unsigned int defaultfg;
|
extern unsigned int defaultfg;
|
||||||
extern unsigned int defaultbg;
|
extern unsigned int defaultbg;
|
||||||
extern unsigned int defaultcs;
|
extern unsigned int defaultcs;
|
||||||
|
#if EXTERNALPIPE_PATCH
|
||||||
|
extern int extpipeactive;
|
||||||
|
#endif // EXTERNALPIPE_PATCH
|
||||||
|
|
||||||
#if BOXDRAW_PATCH
|
#if BOXDRAW_PATCH
|
||||||
extern const int boxdraw, boxdraw_bold, boxdraw_braille;
|
extern const int boxdraw, boxdraw_bold, boxdraw_braille;
|
||||||
#endif // BOXDRAW_PATCH
|
#endif // BOXDRAW_PATCH
|
||||||
|
|
Loading…
Reference in New Issue