diff options
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); |
