From 54c46dc5bab7f924e3bbd203a6d04807c97fd720 Mon Sep 17 00:00:00 2001 From: Saumit Dinesan Date: Sun, 4 Sep 2022 20:18:30 +0530 Subject: applying boxdraw patch and adding vertcenter patch --- patches/10th-st-externalpipe-0.8.4.diff | 92 --------------------------------- 1 file changed, 92 deletions(-) delete mode 100644 patches/10th-st-externalpipe-0.8.4.diff (limited to 'patches/10th-st-externalpipe-0.8.4.diff') diff --git a/patches/10th-st-externalpipe-0.8.4.diff b/patches/10th-st-externalpipe-0.8.4.diff deleted file mode 100644 index 297d746..0000000 --- a/patches/10th-st-externalpipe-0.8.4.diff +++ /dev/null @@ -1,92 +0,0 @@ -diff --git a/st.c b/st.c -index 76b7e0d..0e9a614 100644 ---- a/st.c -+++ b/st.c -@@ -723,8 +723,14 @@ sigchld(int a) - if ((p = waitpid(pid, &stat, WNOHANG)) < 0) - die("waiting for pid %hd failed: %s\n", pid, strerror(errno)); - -- if (pid != p) -+ if (pid != p) { -+ if (p == 0 && wait(&stat) < 0) -+ die("wait: %s\n", strerror(errno)); -+ -+ /* reinstall sigchld handler */ -+ signal(SIGCHLD, sigchld); - return; -+ } - - if (WIFEXITED(stat) && WEXITSTATUS(stat)) - die("child exited with status %d\n", WEXITSTATUS(stat)); -@@ -1926,6 +1932,59 @@ strparse(void) - } - } - -+void -+externalpipe(const Arg *arg) -+{ -+ int to[2]; -+ char buf[UTF_SIZ]; -+ void (*oldsigpipe)(int); -+ Glyph *bp, *end; -+ int lastpos, n, newline; -+ -+ if (pipe(to) == -1) -+ return; -+ -+ switch (fork()) { -+ case -1: -+ close(to[0]); -+ close(to[1]); -+ return; -+ case 0: -+ dup2(to[0], STDIN_FILENO); -+ close(to[0]); -+ close(to[1]); -+ execvp(((char **)arg->v)[0], (char **)arg->v); -+ fprintf(stderr, "st: execvp %s\n", ((char **)arg->v)[0]); -+ perror("failed"); -+ exit(0); -+ } -+ -+ close(to[0]); -+ /* ignore sigpipe for now, in case child exists early */ -+ oldsigpipe = signal(SIGPIPE, SIG_IGN); -+ newline = 0; -+ for (n = 0; n < term.row; n++) { -+ bp = term.line[n]; -+ lastpos = MIN(tlinelen(n) + 1, term.col) - 1; -+ if (lastpos < 0) -+ break; -+ end = &bp[lastpos + 1]; -+ for (; bp < end; ++bp) -+ if (xwrite(to[1], buf, utf8encode(bp->u, buf)) < 0) -+ break; -+ if ((newline = term.line[n][lastpos].mode & ATTR_WRAP)) -+ continue; -+ if (xwrite(to[1], "\n", 1) < 0) -+ break; -+ newline = 0; -+ } -+ if (newline) -+ (void)xwrite(to[1], "\n", 1); -+ close(to[1]); -+ /* restore */ -+ signal(SIGPIPE, oldsigpipe); -+} -+ - void - strdump(void) - { -diff --git a/st.h b/st.h -index 3d351b6..392b64e 100644 ---- a/st.h -+++ b/st.h -@@ -81,6 +81,7 @@ void die(const char *, ...); - void redraw(void); - void draw(void); - -+void externalpipe(const Arg *); - void printscreen(const Arg *); - void printsel(const Arg *); - void sendbreak(const Arg *); -- cgit v1.2.3