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.
This commit is contained in:

committed by
Hiltjo Posthuma

parent
5703aa0390
commit
21e0d6e8b8
16
st.c
16
st.c
@ -664,7 +664,7 @@ die(const char *errstr, ...)
|
||||
void
|
||||
execsh(char *cmd, char **args)
|
||||
{
|
||||
char *sh, *prog;
|
||||
char *sh, *prog, *arg;
|
||||
const struct passwd *pw;
|
||||
|
||||
errno = 0;
|
||||
@ -678,13 +678,17 @@ execsh(char *cmd, char **args)
|
||||
if ((sh = getenv("SHELL")) == NULL)
|
||||
sh = (pw->pw_shell[0]) ? pw->pw_shell : cmd;
|
||||
|
||||
if (args)
|
||||
if (args) {
|
||||
prog = args[0];
|
||||
else if (utmp)
|
||||
prog = utmp;
|
||||
else
|
||||
arg = NULL;
|
||||
} else if (scroll || utmp) {
|
||||
prog = scroll ? scroll : utmp;
|
||||
arg = scroll ? utmp : NULL;
|
||||
} else {
|
||||
prog = sh;
|
||||
DEFAULT(args, ((char *[]) {prog, NULL}));
|
||||
arg = NULL;
|
||||
}
|
||||
DEFAULT(args, ((char *[]) {prog, arg, NULL}));
|
||||
|
||||
unsetenv("COLUMNS");
|
||||
unsetenv("LINES");
|
||||
|
Reference in New Issue
Block a user