Add support for scroll(1)
Scroll is a program that stores all the lines of its child and be used in st as a way of implementing scrollback. This solution is much better than implementing the scrollback in st itself because having a different program allows to use it in any other program without doing modifications to those programs.dev
							parent
							
								
									5703aa0390
								
							
						
					
					
						commit
						21e0d6e8b8
					
				|  | @ -11,13 +11,14 @@ static int borderpx = 2; | ||||||
| /*
 | /*
 | ||||||
|  * What program is execed by st depends of these precedence rules: |  * What program is execed by st depends of these precedence rules: | ||||||
|  * 1: program passed with -e |  * 1: program passed with -e | ||||||
|  * 2: utmp option |  * 2: scroll and/or utmp | ||||||
|  * 3: SHELL environment variable |  * 3: SHELL environment variable | ||||||
|  * 4: value of shell in /etc/passwd |  * 4: value of shell in /etc/passwd | ||||||
|  * 5: value of shell in config.h |  * 5: value of shell in config.h | ||||||
|  */ |  */ | ||||||
| static char *shell = "/bin/sh"; | static char *shell = "/bin/sh"; | ||||||
| char *utmp = NULL; | char *utmp = NULL; | ||||||
|  | char *scroll = NULL; | ||||||
| char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; | char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; | ||||||
| 
 | 
 | ||||||
| /* identification sequence returned in DA and DECID */ | /* identification sequence returned in DA and DECID */ | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								st.1
								
								
								
								
							
							
						
						
									
										3
									
								
								st.1
								
								
								
								
							|  | @ -170,7 +170,8 @@ See the LICENSE file for the terms of redistribution. | ||||||
| .SH SEE ALSO | .SH SEE ALSO | ||||||
| .BR tabbed (1), | .BR tabbed (1), | ||||||
| .BR utmp (1), | .BR utmp (1), | ||||||
| .BR stty (1) | .BR stty (1), | ||||||
|  | .BR scroll (1) | ||||||
| .SH BUGS | .SH BUGS | ||||||
| See the TODO file in the distribution. | See the TODO file in the distribution. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										16
									
								
								st.c
								
								
								
								
							
							
						
						
									
										16
									
								
								st.c
								
								
								
								
							|  | @ -664,7 +664,7 @@ die(const char *errstr, ...) | ||||||
| void | void | ||||||
| execsh(char *cmd, char **args) | execsh(char *cmd, char **args) | ||||||
| { | { | ||||||
| 	char *sh, *prog; | 	char *sh, *prog, *arg; | ||||||
| 	const struct passwd *pw; | 	const struct passwd *pw; | ||||||
| 
 | 
 | ||||||
| 	errno = 0; | 	errno = 0; | ||||||
|  | @ -678,13 +678,17 @@ execsh(char *cmd, char **args) | ||||||
| 	if ((sh = getenv("SHELL")) == NULL) | 	if ((sh = getenv("SHELL")) == NULL) | ||||||
| 		sh = (pw->pw_shell[0]) ? pw->pw_shell : cmd; | 		sh = (pw->pw_shell[0]) ? pw->pw_shell : cmd; | ||||||
| 
 | 
 | ||||||
| 	if (args) | 	if (args) { | ||||||
| 		prog = args[0]; | 		prog = args[0]; | ||||||
| 	else if (utmp) | 		arg = NULL; | ||||||
| 		prog = utmp; | 	} else if (scroll || utmp) { | ||||||
| 	else | 		prog = scroll ? scroll : utmp; | ||||||
|  | 		arg = scroll ? utmp : NULL; | ||||||
|  | 	} else { | ||||||
| 		prog = sh; | 		prog = sh; | ||||||
| 	DEFAULT(args, ((char *[]) {prog, NULL})); | 		arg = NULL; | ||||||
|  | 	} | ||||||
|  | 	DEFAULT(args, ((char *[]) {prog, arg, NULL})); | ||||||
| 
 | 
 | ||||||
| 	unsetenv("COLUMNS"); | 	unsetenv("COLUMNS"); | ||||||
| 	unsetenv("LINES"); | 	unsetenv("LINES"); | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								st.h
								
								
								
								
							
							
						
						
									
										1
									
								
								st.h
								
								
								
								
							|  | @ -113,6 +113,7 @@ char *xstrdup(char *); | ||||||
| 
 | 
 | ||||||
| /* config.h globals */ | /* config.h globals */ | ||||||
| extern char *utmp; | extern char *utmp; | ||||||
|  | extern char *scroll; | ||||||
| extern char *stty_args; | extern char *stty_args; | ||||||
| extern char *vtiden; | extern char *vtiden; | ||||||
| extern wchar_t *worddelimiters; | extern wchar_t *worddelimiters; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue