added -e and -t option.
This commit is contained in:
		
							
								
								
									
										36
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								st.c
									
									
									
									
									
								
							@@ -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();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user