diff options
| author | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2014-01-31 20:57:09 +0100 | 
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2014-02-22 11:54:30 +0100 | 
| commit | 1f0d981bd7a1450ddfae3591c6e457253b3a6842 (patch) | |
| tree | 439764c43f577fb59e7fa9b2dd4eb173436144cc | |
| parent | cdb3b1892af40110660da8c3f6fc06b1b054fd12 (diff) | |
| download | st-transparency-1f0d981bd7a1450ddfae3591c6e457253b3a6842.tar.gz st-transparency-1f0d981bd7a1450ddfae3591c6e457253b3a6842.tar.xz st-transparency-1f0d981bd7a1450ddfae3591c6e457253b3a6842.zip  | |
Add MC sequence
This sequence control when the printer is enabled or disabled. This
sequence control the behaviour of the -o option.
| -rw-r--r-- | st.c | 18 | 
1 files changed, 16 insertions, 2 deletions
@@ -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));  | 
