diff options
author | Aurélien Aptel <aurelien.aptel@gmail.com> | 2010-11-30 22:55:44 +0100 |
---|---|---|
committer | Aurélien Aptel <aurelien.aptel@gmail.com> | 2010-11-30 22:55:44 +0100 |
commit | 86c5cb6de6644aeea3c480f66bdeb5e685aab86f (patch) | |
tree | c2e0b837ea9437f8ac9c2f5a5e0aeaf4b6ae3a7f /st.c | |
parent | 732b9601ed2543b1fa6acbc08ddc05818279265f (diff) | |
download | st-86c5cb6de6644aeea3c480f66bdeb5e685aab86f.tar.gz st-86c5cb6de6644aeea3c480f66bdeb5e685aab86f.tar.bz2 st-86c5cb6de6644aeea3c480f66bdeb5e685aab86f.zip |
change -e behaviour and update man page.
Diffstat (limited to 'st.c')
-rw-r--r-- | st.c | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -247,7 +247,7 @@ static CSIEscape escseq; 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; @@ -547,15 +547,12 @@ void execsh(void) { char **args; char *envshell = getenv("SHELL"); - DEFAULT(envshell, "sh"); - if(opt_cmd) - args = (char*[]){"sh", "-c", opt_cmd, NULL}; - else - args = (char*[]){envshell, "-i", NULL}; - + DEFAULT(envshell, "sh"); putenv("TERM="TNAME); + args = opt_cmd ? opt_cmd : (char*[]){envshell, "-i", NULL}; execvp(args[0], args); + exit(EXIT_FAILURE); } void @@ -1855,12 +1852,15 @@ main(int argc, char *argv[]) { 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); } + /* -e eats every remaining arguments */ + if(opt_cmd) + break; } setlocale(LC_CTYPE, ""); tnew(80, 24); |