Xinqi Bao's Git
projects
/
st.git
/ commitdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
97695ba
)
added -e and -t option.
author
Aurélien Aptel <
[email protected]
>
Wed, 1 Sep 2010 23:37:01 +0000
(
01:37
+0200)
committer
Aurélien Aptel <
[email protected]
>
Wed, 1 Sep 2010 23:37:01 +0000
(
01:37
+0200)
st.c
patch
|
blob
|
history
diff --git
a/st.c
b/st.c
index
5633e40
..
f7f9de8
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-28,6
+28,10
@@
#include <libutil.h>
#endif
#include <libutil.h>
#endif
+#define USAGE \
+ "st-" VERSION ", (c) 2010 st engineers\n" \
+ "usage: st [-t title] [-e cmd] [-v]\n"
+
/* Arbitrary sizes */
#define ESC_TITLE_SIZ 256
#define ESC_BUF_SIZ 256
/* Arbitrary sizes */
#define ESC_TITLE_SIZ 256
#define ESC_BUF_SIZ 256
@@
-210,6
+214,8
@@
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_title = NULL;
void
selinit(void) {
void
selinit(void) {
@@
-329,9
+335,12
@@
die(const char *errstr, ...) {
void
execsh(void) {
void
execsh(void) {
- char *args[3] = {getenv("SHELL"), "-i", NULL};
- DEFAULT(args[0], SHELL); /* if getenv() failed */
- putenv("TERM=" TNAME);
+ char *args[] = {getenv("SHELL"), "-i", NULL};
+ if(opt_cmd)
+ args[0] = opt_cmd, args[1] = NULL;
+ else
+ DEFAULT(args[0], SHELL);
+ putenv("TERM="TNAME);
execvp(args[0], args);
}
execvp(args[0], args);
}
@@
-1189,7
+1198,7
@@
xinit(void) {
XMapWindow(xw.dis, xw.win);
xhints();
XMapWindow(xw.dis, xw.win);
xhints();
- XStoreName(xw.dis, xw.win, "st");
+ XStoreName(xw.dis, xw.win,
opt_title ? opt_title :
"st");
XSync(xw.dis, 0);
}
XSync(xw.dis, 0);
}
@@
-1429,10
+1438,21
@@
run(void) {
int
main(int argc, char *argv[]) {
int
main(int argc, char *argv[]) {
- if(argc == 2 && !strncmp("-v", argv[1], 3))
- die("st-" VERSION ", (c) 2010 st engineers\n");
- else if(argc != 1)
- die("usage: st [-v]\n");
+ int i;
+
+ for(i = 1; i < argc; i++) {
+ switch(argv[i][0] != '-' || argv[i][2] ? -1 : argv[i][1]) {
+ case 't':
+ if(++i < argc) opt_title = argv[i];
+ break;
+ case 'e':
+ if(++i < argc) opt_cmd = argv[i];
+ break;
+ case 'v':
+ default:
+ die(USAGE);
+ }
+ }
setlocale(LC_CTYPE, "");
tnew(80, 24);
ttynew();
setlocale(LC_CTYPE, "");
tnew(80, 24);
ttynew();