st

OSHs st build
git clone git://git.oshgnacknak.de/st.git
Log | Files | Refs | README | LICENSE

commit 1f0d981bd7a1450ddfae3591c6e457253b3a6842
parent cdb3b1892af40110660da8c3f6fc06b1b054fd12
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri, 31 Jan 2014 20:57:09 +0100

Add MC sequence

This sequence control when the printer is enabled or disabled. This
sequence control the behaviour of the -o option.

Diffstat:
Mst.c | 18++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/st.c b/st.c @@ -134,6 +134,7 @@ enum term_mode { MODE_MOUSEX10 = 131072, MODE_MOUSEMANY = 262144, MODE_BRCKTPASTE = 524288, + MODE_PRINT = 1048576, MODE_MOUSE = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\ |MODE_MOUSEMANY, }; @@ -469,7 +470,7 @@ static STREscape strescseq; static int cmdfd; static pid_t pid; static Selection sel; -static int iofd = -1; +static int iofd; static char **opt_cmd = NULL; static char *opt_io = NULL; static char *opt_title = NULL; @@ -1256,6 +1257,7 @@ ttynew(void) { cmdfd = m; signal(SIGCHLD, sigchld); if(opt_io) { + term.mode |= MODE_PRINT; iofd = (!strcmp(opt_io, "-")) ? STDOUT_FILENO : open(opt_io, O_WRONLY | O_CREAT, 0666); @@ -1979,6 +1981,18 @@ csihandle(void) { DEFAULT(csiescseq.arg[0], 1); tmoveto(term.c.x, term.c.y+csiescseq.arg[0]); break; + case 'i': /* MC -- Media Copy */ + switch(csiescseq.arg[0]) { + case 0: + case 1: + case 4: + term.mode &= ~MODE_PRINT; + break; + case 5: + term.mode |= MODE_PRINT; + break; + } + break; case 'c': /* DA -- Device Attributes */ if(csiescseq.arg[0] == 0) ttywrite(VT102ID, sizeof(VT102ID) - 1); @@ -2332,7 +2346,7 @@ tputc(char *c, int len) { width = wcwidth(u8char); } - if(iofd != -1) { + if(IS_SET(MODE_PRINT) && iofd != -1) { if(xwrite(iofd, c, len) < 0) { fprintf(stderr, "Error writing in %s:%s\n", opt_io, strerror(errno));