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