added -e and -t option.
Aurélien Aptel aurelien.aptel@gmail.com
1 files changed,
28 insertions(+),
8 deletions(-)
jump to
M
st.c
→
st.c
@@ -28,6 +28,10 @@ #elif defined(__FreeBSD__) || defined(__DragonFly__)
#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@@ -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) {@@ -329,9 +335,12 @@ }
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); }@@ -1189,7 +1198,7 @@ | ButtonPressMask | ButtonReleaseMask);
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); }@@ -1429,10 +1438,21 @@ }
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();