change -e behaviour and update man page.
This commit is contained in:
		
							parent
							
								
									732b9601ed
								
							
						
					
					
						commit
						86c5cb6de6
					
				
							
								
								
									
										25
									
								
								st.1
								
								
								
								
							
							
						
						
									
										25
									
								
								st.1
								
								
								
								
							| 
						 | 
				
			
			@ -3,23 +3,30 @@
 | 
			
		|||
st \- simple terminal
 | 
			
		||||
.SH SYNOPSIS
 | 
			
		||||
.B st
 | 
			
		||||
.RB [ \-e " <cmd>"]
 | 
			
		||||
.RB [ \-c " <class>"]
 | 
			
		||||
.RB [ \-t " <title>"]
 | 
			
		||||
.RB [ \-c
 | 
			
		||||
.IR class ]
 | 
			
		||||
.RB [ \-t 
 | 
			
		||||
.IR title ]
 | 
			
		||||
.RB [ \-v ]
 | 
			
		||||
.RB [ \-e
 | 
			
		||||
.IR cmd ]
 | 
			
		||||
.SH DESCRIPTION
 | 
			
		||||
.B st
 | 
			
		||||
is a simple terminal emulator.
 | 
			
		||||
.SH OPTIONS
 | 
			
		||||
.TP
 | 
			
		||||
.B \-e <cmd>
 | 
			
		||||
Execute cmd instead of the shell
 | 
			
		||||
.TP
 | 
			
		||||
.B \-t <title>
 | 
			
		||||
.B \-t title
 | 
			
		||||
Overrides the default title (st)
 | 
			
		||||
.TP
 | 
			
		||||
.B \-c <class>
 | 
			
		||||
.B \-c class
 | 
			
		||||
Overrides the default class ($TERM)
 | 
			
		||||
.TP
 | 
			
		||||
.BI \-v
 | 
			
		||||
.B \-v
 | 
			
		||||
Prints version information to standard output, then exits.
 | 
			
		||||
.TP
 | 
			
		||||
.B \-e cmd [arguments]
 | 
			
		||||
Execute cmd instead of the shell. Type your command as you would on your
 | 
			
		||||
shell. If this option is used, it
 | 
			
		||||
.BI "must be the last"
 | 
			
		||||
on the command-line. This is the same behaviour as xterm/rxvt.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								st.c
								
								
								
								
							
							
						
						
									
										16
									
								
								st.c
								
								
								
								
							| 
						 | 
				
			
			@ -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};
 | 
			
		||||
	
 | 
			
		||||
	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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue