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 | -e flag handles arguments. (diff) | |
| download | st-86c5cb6de6644aeea3c480f66bdeb5e685aab86f.tar.gz 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; | |||
| 247 | static int cmdfd; | 247 | static int cmdfd; |
| 248 | static pid_t pid; | 248 | static pid_t pid; |
| 249 | static Selection sel; | 249 | static Selection sel; |
| 250 | static char *opt_cmd = NULL; | 250 | static char **opt_cmd = NULL; |
| 251 | static char *opt_title = NULL; | 251 | static char *opt_title = NULL; |
| 252 | static char *opt_class = NULL; | 252 | static char *opt_class = NULL; |
| 253 | 253 | ||
| @@ -547,15 +547,12 @@ void | |||
| 547 | execsh(void) { | 547 | execsh(void) { |
| 548 | char **args; | 548 | char **args; |
| 549 | char *envshell = getenv("SHELL"); | 549 | char *envshell = getenv("SHELL"); |
| 550 | DEFAULT(envshell, "sh"); | ||
| 551 | 550 | ||
| 552 | if(opt_cmd) | 551 | DEFAULT(envshell, "sh"); |
| 553 | args = (char*[]){"sh", "-c", opt_cmd, NULL}; | ||
| 554 | else | ||
| 555 | args = (char*[]){envshell, "-i", NULL}; | ||
| 556 | |||
| 557 | putenv("TERM="TNAME); | 552 | putenv("TERM="TNAME); |
| 553 | args = opt_cmd ? opt_cmd : (char*[]){envshell, "-i", NULL}; | ||
| 558 | execvp(args[0], args); | 554 | execvp(args[0], args); |
| 555 | exit(EXIT_FAILURE); | ||
| 559 | } | 556 | } |
| 560 | 557 | ||
| 561 | void | 558 | void |
| @@ -1855,12 +1852,15 @@ main(int argc, char *argv[]) { | |||
| 1855 | if(++i < argc) opt_class = argv[i]; | 1852 | if(++i < argc) opt_class = argv[i]; |
| 1856 | break; | 1853 | break; |
| 1857 | case 'e': | 1854 | case 'e': |
| 1858 | if(++i < argc) opt_cmd = argv[i]; | 1855 | if(++i < argc) opt_cmd = &argv[i]; |
| 1859 | break; | 1856 | break; |
| 1860 | case 'v': | 1857 | case 'v': |
| 1861 | default: | 1858 | default: |
| 1862 | die(USAGE); | 1859 | die(USAGE); |
| 1863 | } | 1860 | } |
| 1861 | /* -e eats every remaining arguments */ | ||
| 1862 | if(opt_cmd) | ||
| 1863 | break; | ||
| 1864 | } | 1864 | } |
| 1865 | setlocale(LC_CTYPE, ""); | 1865 | setlocale(LC_CTYPE, ""); |
| 1866 | tnew(80, 24); | 1866 | tnew(80, 24); |
