Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
update terminfo entry.
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
3829e73
..
2be6772
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-247,7
+247,7
@@
static CSIEscape escseq;
static int cmdfd;
static pid_t pid;
static Selection sel;
static int cmdfd;
static pid_t pid;
static Selection sel;
-static char *
opt_cmd
= NULL;
+static char *
*opt_cmd
= NULL;
static char *opt_title = NULL;
static char *opt_class = NULL;
static char *opt_title = NULL;
static char *opt_class = NULL;
@@
-545,13
+545,14
@@
die(const char *errstr, ...) {
void
execsh(void) {
void
execsh(void) {
- char *args[] = {getenv("SHELL"), "-i", NULL};
- if(opt_cmd)
- args[0] = opt_cmd, args[1] = NULL;
- else
- DEFAULT(args[0], SHELL);
+ char **args;
+ char *envshell = getenv("SHELL");
+
+ DEFAULT(envshell, "sh");
putenv("TERM="TNAME);
putenv("TERM="TNAME);
+ args = opt_cmd ? opt_cmd : (char*[]){envshell, "-i", NULL};
execvp(args[0], args);
execvp(args[0], args);
+ exit(EXIT_FAILURE);
}
void
}
void
@@
-630,7
+631,7
@@
ttyread(void) {
}
/* keep any uncomplete utf8 char for the next call */
}
/* keep any uncomplete utf8 char for the next call */
- mem
cpy
(buf, ptr, buflen);
+ mem
move
(buf, ptr, buflen);
}
void
}
void
@@
-1851,12
+1852,15
@@
main(int argc, char *argv[]) {
if(++i < argc) opt_class = argv[i];
break;
case 'e':
if(++i < argc) opt_class = argv[i];
break;
case 'e':
- if(++i < argc) opt_cmd = argv[i];
+ if(++i < argc) opt_cmd =
&
argv[i];
break;
case 'v':
default:
die(USAGE);
}
break;
case 'v':
default:
die(USAGE);
}
+ /* -e eats every remaining arguments */
+ if(opt_cmd)
+ break;
}
setlocale(LC_CTYPE, "");
tnew(80, 24);
}
setlocale(LC_CTYPE, "");
tnew(80, 24);