change -e behaviour and update man page.
This commit is contained in:
		
							
								
								
									
										25
									
								
								st.1
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								st.1
									
									
									
									
									
								
							@@ -3,23 +3,30 @@
 | 
				
			|||||||
st \- simple terminal
 | 
					st \- simple terminal
 | 
				
			||||||
.SH SYNOPSIS
 | 
					.SH SYNOPSIS
 | 
				
			||||||
.B st
 | 
					.B st
 | 
				
			||||||
.RB [ \-e " <cmd>"]
 | 
					.RB [ \-c
 | 
				
			||||||
.RB [ \-c " <class>"]
 | 
					.IR class ]
 | 
				
			||||||
.RB [ \-t " <title>"]
 | 
					.RB [ \-t 
 | 
				
			||||||
 | 
					.IR title ]
 | 
				
			||||||
.RB [ \-v ]
 | 
					.RB [ \-v ]
 | 
				
			||||||
 | 
					.RB [ \-e
 | 
				
			||||||
 | 
					.IR cmd ]
 | 
				
			||||||
.SH DESCRIPTION
 | 
					.SH DESCRIPTION
 | 
				
			||||||
.B st
 | 
					.B st
 | 
				
			||||||
is a simple terminal emulator.
 | 
					is a simple terminal emulator.
 | 
				
			||||||
.SH OPTIONS
 | 
					.SH OPTIONS
 | 
				
			||||||
.TP
 | 
					.TP
 | 
				
			||||||
.B \-e <cmd>
 | 
					.B \-t title
 | 
				
			||||||
Execute cmd instead of the shell
 | 
					 | 
				
			||||||
.TP
 | 
					 | 
				
			||||||
.B \-t <title>
 | 
					 | 
				
			||||||
Overrides the default title (st)
 | 
					Overrides the default title (st)
 | 
				
			||||||
.TP
 | 
					.TP
 | 
				
			||||||
.B \-c <class>
 | 
					.B \-c class
 | 
				
			||||||
Overrides the default class ($TERM)
 | 
					Overrides the default class ($TERM)
 | 
				
			||||||
.TP
 | 
					.TP
 | 
				
			||||||
.BI \-v
 | 
					.B \-v
 | 
				
			||||||
Prints version information to standard output, then exits.
 | 
					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 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)
 | 
						DEFAULT(envshell, "sh");
 | 
				
			||||||
		args = (char*[]){"sh", "-c", opt_cmd, NULL};
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		args = (char*[]){envshell, "-i", NULL};
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	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);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user