tAdd MC sequence - st - [fork] customized build of st, the simple terminal | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 1f0d981bd7a1450ddfae3591c6e457253b3a6842 | |
parent cdb3b1892af40110660da8c3f6fc06b1b054fd12 | |
Author: Roberto E. Vargas Caballero <[email protected]> | |
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: | |
M st.c | 18 ++++++++++++++++-- | |
1 file changed, 16 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -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, | |
}; | |
t@@ -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; | |
t@@ -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); | |
t@@ -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); | |
t@@ -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)); |