Introduction
Introduction Statistics Contact Development Disclaimer Help
tchange -e behaviour and update man page. - st - [fork] customized build of st,…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 86c5cb6de6644aeea3c480f66bdeb5e685aab86f
parent 732b9601ed2543b1fa6acbc08ddc05818279265f
Author: AurĂ©lien Aptel <[email protected]>
Date: Tue, 30 Nov 2010 22:55:44 +0100
change -e behaviour and update man page.
Diffstat:
M st.1 | 25 ++++++++++++++++---------
M st.c | 16 ++++++++--------
2 files changed, 24 insertions(+), 17 deletions(-)
---
diff --git a/st.1 b/st.1
t@@ -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.
+
diff --git a/st.c b/st.c
t@@ -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;
t@@ -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};
-
+ DEFAULT(envshell, "sh");
putenv("TERM="TNAME);
+ args = opt_cmd ? opt_cmd : (char*[]){envshell, "-i", NULL};
execvp(args[0], args);
+ exit(EXIT_FAILURE);
}
void
t@@ -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);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.