sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 12cb2623da5b7b3c8c672873331fe7aa859e3856
parent be6a2648221e7ebb58e9cd6368ec7092f07af646
Author: Lucas Gabriel Vuotto <lvuotto92@gmail.com>
Date:   Mon, 20 Mar 2017 11:54:03 -0300

Update st-externalpipe to current head (e7ed326)

Signed-off-by: Lucas Gabriel Vuotto <lvuotto92@gmail.com>

Diffstat:
Mst.suckless.org/patches/externalpipe.md | 2+-
Dst.suckless.org/patches/st-externalpipe-20161125-e448324.diff | 75---------------------------------------------------------------------------
Ast.suckless.org/patches/st-externalpipe-20170320-e7ed326.diff | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 76 deletions(-)

diff --git a/st.suckless.org/patches/externalpipe.md b/st.suckless.org/patches/externalpipe.md @@ -27,7 +27,7 @@ Download * [st-externalpipe-0.4.1.diff](st-externalpipe-0.4.1.diff) * [st-externalpipe-0.5.diff](st-externalpipe-0.5.diff) * [st-externalpipe-0.6.diff](st-externalpipe-0.6.diff) -* [st-externalpipe-20161125-e448324.diff](st-externalpipe-20161125-e448324.diff) +* [st-externalpipe-20170320-e7ed326.diff](st-externalpipe-20170320-e7ed326.diff) Authors ------- diff --git a/st.suckless.org/patches/st-externalpipe-20161125-e448324.diff b/st.suckless.org/patches/st-externalpipe-20161125-e448324.diff @@ -1,75 +0,0 @@ -diff --git a/st.c b/st.c -index d6fe58a..1595e59 100644 ---- a/st.c -+++ b/st.c -@@ -344,6 +344,7 @@ static void printscreen(const Arg *) ; - static void iso14755(const Arg *); - static void toggleprinter(const Arg *); - static void sendbreak(const Arg *); -+static void externalpipe(const Arg *); - - /* Config.h for applying patches and the configuration. */ - #include "config.h" -@@ -2996,6 +2997,62 @@ eschandle(uchar ascii) - } - - void -+externalpipe(const Arg *arg) -+{ -+ int to[2]; /* 0 = read, 1 = write */ -+ pid_t child; -+ int n; -+ void (*oldsigpipe)(int); -+ char buf[UTF_SIZ]; -+ Glyph *bp, *end; -+ -+ if(pipe(to) == -1) -+ return; -+ -+ /* sigchld() handles this */ -+ switch(child = fork()){ -+ case -1: -+ close(to[0]), close(to[1]); -+ return; -+ case 0: -+ /* child */ -+ close(to[1]); -+ dup2(to[0], STDIN_FILENO); /* 0<&to */ -+ close(to[0]); -+ execvp( -+ "sh", -+ (char *const []){ -+ "/bin/sh", -+ "-c", -+ (char *)arg->v, -+ 0 -+ }); -+ exit(127); -+ } -+ -+ /* parent */ -+ close(to[0]); -+ /* ignore sigpipe for now, in case child exits early */ -+ oldsigpipe = signal(SIGPIPE, SIG_IGN); -+ -+ for(n = 0; n < term.row; n++){ -+ bp = &term.line[n][0]; -+ end = &bp[MIN(tlinelen(n), term.col) - 1]; -+ if(bp != end || bp->u != ' ') -+ for(; bp <= end; ++bp) -+ if(xwrite(to[1], buf, utf8encode(bp->u, buf)) < 0) -+ break; -+ if(xwrite(to[1], "\n", 1) < 0) -+ break; -+ } -+ -+ close(to[1]); -+ -+ /* restore */ -+ signal(SIGPIPE, oldsigpipe); -+} -+ -+void - tputc(Rune u) - { - char c[UTF_SIZ]; diff --git a/st.suckless.org/patches/st-externalpipe-20170320-e7ed326.diff b/st.suckless.org/patches/st-externalpipe-20170320-e7ed326.diff @@ -0,0 +1,75 @@ +diff --git a/st.c b/st.c +index d6fe58a..1595e59 100644 +--- a/st.c ++++ b/st.c +@@ -138,6 +138,7 @@ static void printscreen(const Arg *) ; + static void iso14755(const Arg *); + static void toggleprinter(const Arg *); + static void sendbreak(const Arg *); ++static void externalpipe(const Arg *); + + /* config.h for applying patches and the configuration. */ + #include "config.h" +@@ -2341,6 +2342,62 @@ eschandle(uchar ascii) + } + + void ++externalpipe(const Arg *arg) ++{ ++ int to[2]; /* 0 = read, 1 = write */ ++ pid_t child; ++ int n; ++ void (*oldsigpipe)(int); ++ char buf[UTF_SIZ]; ++ Glyph *bp, *end; ++ ++ if(pipe(to) == -1) ++ return; ++ ++ /* sigchld() handles this */ ++ switch(child = fork()){ ++ case -1: ++ close(to[0]), close(to[1]); ++ return; ++ case 0: ++ /* child */ ++ close(to[1]); ++ dup2(to[0], STDIN_FILENO); /* 0<&to */ ++ close(to[0]); ++ execvp( ++ "sh", ++ (char *const []){ ++ "/bin/sh", ++ "-c", ++ (char *)arg->v, ++ 0 ++ }); ++ exit(127); ++ } ++ ++ /* parent */ ++ close(to[0]); ++ /* ignore sigpipe for now, in case child exits early */ ++ oldsigpipe = signal(SIGPIPE, SIG_IGN); ++ ++ for(n = 0; n < term.row; n++){ ++ bp = &term.line[n][0]; ++ end = &bp[MIN(tlinelen(n), term.col) - 1]; ++ if(bp != end || bp->u != ' ') ++ for(; bp <= end; ++bp) ++ if(xwrite(to[1], buf, utf8encode(bp->u, buf)) < 0) ++ break; ++ if(xwrite(to[1], "\n", 1) < 0) ++ break; ++ } ++ ++ close(to[1]); ++ ++ /* restore */ ++ signal(SIGPIPE, oldsigpipe); ++} ++ ++void + tputc(Rune u) + { + char c[UTF_SIZ];