|
|
@ -247,7 +247,7 @@ static CSIEscape escseq;
|
|
|
|
static int cmdfd;
|
|
|
|
static int cmdfd;
|
|
|
|
static pid_t pid;
|
|
|
|
static pid_t pid;
|
|
|
|
static Selection sel;
|
|
|
|
static Selection sel;
|
|
|
|
static char *opt_cmd = NULL;
|
|
|
|
static char **opt_cmd = NULL;
|
|
|
|
static char *opt_title = NULL;
|
|
|
|
static char *opt_title = NULL;
|
|
|
|
static char *opt_class = NULL;
|
|
|
|
static char *opt_class = NULL;
|
|
|
|
|
|
|
|
|
|
|
@ -547,15 +547,12 @@ void
|
|
|
|
execsh(void) {
|
|
|
|
execsh(void) {
|
|
|
|
char **args;
|
|
|
|
char **args;
|
|
|
|
char *envshell = getenv("SHELL");
|
|
|
|
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);
|
|
|
|
putenv("TERM="TNAME);
|
|
|
|
|
|
|
|
args = opt_cmd ? opt_cmd : (char*[]){envshell, "-i", NULL};
|
|
|
|
execvp(args[0], args);
|
|
|
|
execvp(args[0], args);
|
|
|
|
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
@ -1855,12 +1852,15 @@ main(int argc, char *argv[]) {
|
|
|
|
if(++i < argc) opt_class = argv[i];
|
|
|
|
if(++i < argc) opt_class = argv[i];
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 'e':
|
|
|
|
case 'e':
|
|
|
|
if(++i < argc) opt_cmd = argv[i];
|
|
|
|
if(++i < argc) opt_cmd = &argv[i];
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 'v':
|
|
|
|
case 'v':
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
die(USAGE);
|
|
|
|
die(USAGE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -e eats every remaining arguments */
|
|
|
|
|
|
|
|
if(opt_cmd)
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
setlocale(LC_CTYPE, "");
|
|
|
|
setlocale(LC_CTYPE, "");
|
|
|
|
tnew(80, 24);
|
|
|
|
tnew(80, 24);
|
|
|
|