Add write I/O to file
This is a theorical feature listed in http://st.suckless.org/goals. All the input/output of the terminal will be written to a file, which can be very useful for debugging, and also allow interconnect st to other process through named pipes. --- st.1 | 6 ++++++ st.c | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)
This commit is contained in:
		
							parent
							
								
									cfefa054e8
								
							
						
					
					
						commit
						a984ffc4cb
					
				
							
								
								
									
										6
									
								
								st.1
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								st.1
									
									
									
									
									
								
							| @ -10,6 +10,8 @@ st \- simple terminal | ||||
| .RB [ \-w  | ||||
| .IR windowid ] | ||||
| .RB [ \-v ] | ||||
| .RB [ \-f | ||||
| .IR file ] | ||||
| .RB [ \-e | ||||
| .IR command ...] | ||||
| .SH DESCRIPTION | ||||
| @ -30,6 +32,10 @@ embeds st within the window identified by | ||||
| .B \-v | ||||
| prints version information to stderr, then exits. | ||||
| .TP | ||||
| .BI \-f " file" | ||||
| writes all the I/O to | ||||
| .I file | ||||
| .TP | ||||
| .BI \-e " program " [ " arguments " "... ]" | ||||
| st executes | ||||
| .I program | ||||
|  | ||||
							
								
								
									
										14
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								st.c
									
									
									
									
									
								
							| @ -36,7 +36,7 @@ | ||||
| 
 | ||||
| #define USAGE \ | ||||
| 	"st " VERSION " (c) 2010-2012 st engineers\n" \ | ||||
| 	"usage: st [-t title] [-c class] [-w windowid] [-v] [-e command...]\n" | ||||
| 	"usage: st [-t title] [-c class] [-w windowid] [-v] [-f file] [-e command...]\n" | ||||
| 
 | ||||
| /* XEMBED messages */ | ||||
| #define XEMBED_FOCUS_IN  4 | ||||
| @ -342,7 +342,9 @@ static STREscape strescseq; | ||||
| static int cmdfd; | ||||
| static pid_t pid; | ||||
| static Selection sel; | ||||
| static FILE *fileio; | ||||
| static char **opt_cmd  = NULL; | ||||
| static char *opt_io    = NULL; | ||||
| static char *opt_title = NULL; | ||||
| static char *opt_embed = NULL; | ||||
| static char *opt_class = NULL; | ||||
| @ -776,6 +778,10 @@ ttynew(void) { | ||||
| 		close(s); | ||||
| 		cmdfd = m; | ||||
| 		signal(SIGCHLD, sigchld); | ||||
| 		if (opt_io && !(fileio = fopen(opt_io, "w"))) { | ||||
| 			fprintf(stderr, "Error opening %s:%s", | ||||
| 				opt_io, strerror(errno)); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| @ -1534,6 +1540,9 @@ tputtab(bool forward) { | ||||
| void | ||||
| tputc(char *c) { | ||||
| 	char ascii = *c; | ||||
| 
 | ||||
| 	if (fileio) | ||||
| 		putc(ascii, fileio); | ||||
| 	if(term.esc & ESC_START) { | ||||
| 		if(term.esc & ESC_CSI) { | ||||
| 			csiescseq.buf[csiescseq.len++] = ascii; | ||||
| @ -2269,6 +2278,9 @@ main(int argc, char *argv[]) { | ||||
| 		case 'w': | ||||
| 			if(++i < argc) opt_embed = argv[i]; | ||||
| 			break; | ||||
| 		case 'f': | ||||
| 			if (++i < argc) opt_io = argv[i]; | ||||
| 			break; | ||||
| 		case 'e': | ||||
| 			/* eat every remaining arguments */ | ||||
| 			if(++i < argc) opt_cmd = &argv[i]; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user