~petersanchez/st

9d82bdd94708fa2daabc0b53f8b71bca2a3c6f0a — Aurélien Aptel 13 years ago 97695ba
added -e and -t option.
1 files changed, 28 insertions(+), 8 deletions(-)

M st.c
M st.c => st.c +28 -8
@@ 28,6 28,10 @@
 #include <libutil.h>
#endif

#define USAGE \
	"st-" VERSION ", (c) 2010 st engineers\n" \
	"usage: st [-t title] [-e cmd] [-v]\n"

/* Arbitrary sizes */
#define ESC_TITLE_SIZ 256
#define ESC_BUF_SIZ   256


@@ 210,6 214,8 @@ static CSIEscape escseq;
static int cmdfd;
static pid_t pid;
static Selection sel;
static char *opt_cmd   = NULL;
static char *opt_title = NULL;

void
selinit(void) {


@@ 329,9 335,12 @@ die(const char *errstr, ...) {

void
execsh(void) {
	char *args[3] = {getenv("SHELL"), "-i", NULL};
	DEFAULT(args[0], SHELL); /* if getenv() failed */
	putenv("TERM=" TNAME);
	char *args[] = {getenv("SHELL"), "-i", NULL};
	if(opt_cmd)
		args[0] = opt_cmd, args[1] = NULL;
	else
		DEFAULT(args[0], SHELL);
	putenv("TERM="TNAME);
	execvp(args[0], args);
}



@@ 1189,7 1198,7 @@ xinit(void) {
	
	XMapWindow(xw.dis, xw.win);
	xhints();
	XStoreName(xw.dis, xw.win, "st");
	XStoreName(xw.dis, xw.win, opt_title ? opt_title : "st");
	XSync(xw.dis, 0);
}



@@ 1429,10 1438,21 @@ run(void) {

int
main(int argc, char *argv[]) {
	if(argc == 2 && !strncmp("-v", argv[1], 3))
		die("st-" VERSION ", (c) 2010 st engineers\n");
	else if(argc != 1)
		die("usage: st [-v]\n");
	int i;
	
	for(i = 1; i < argc; i++) {
		switch(argv[i][0] != '-' || argv[i][2] ? -1 : argv[i][1]) {
		case 't':
			if(++i < argc) opt_title = argv[i];
			break;
		case 'e':
			if(++i < argc) opt_cmd = argv[i];
			break;
		case 'v':
		default:
			die(USAGE);
		}
	}
	setlocale(LC_CTYPE, "");
	tnew(80, 24);
	ttynew();