| tadded -e and -t option. - st - [fork] customized build of st, the simple termi… | |
| git clone git://src.adamsgaard.dk/st | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 9d82bdd94708fa2daabc0b53f8b71bca2a3c6f0a | |
| parent 97695baf4f9bc3632792a3330fb46e188ef166a2 | |
| Author: Aurélien Aptel <[email protected]> | |
| Date: Thu, 2 Sep 2010 01:37:01 +0200 | |
| added -e and -t option. | |
| Diffstat: | |
| M st.c | 36 ++++++++++++++++++++++++-----… | |
| 1 file changed, 28 insertions(+), 8 deletions(-) | |
| --- | |
| diff --git a/st.c b/st.c | |
| t@@ -28,6 +28,10 @@ | |
| #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 | |
| t@@ -210,6 +214,8 @@ static CSIEscape escseq; | |
| static int cmdfd; | |
| static pid_t pid; | |
| static Selection sel; | |
| +static char *opt_cmd = NULL; | |
| +static char *opt_title = NULL; | |
| void | |
| selinit(void) { | |
| t@@ -329,9 +335,12 @@ die(const char *errstr, ...) { | |
| 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); | |
| } | |
| t@@ -1189,7 +1198,7 @@ xinit(void) { | |
| 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); | |
| } | |
| t@@ -1429,10 +1438,21 @@ run(void) { | |
| 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(); |