# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 5dfd5df4fe566beb17069e6390236854f6ace58f
    parent 9cae1eb0ded2e1ca604753893e2307531ef73afc
    Author: Christoph Lohmann <20h@r-36.net>
    Date:   Sun, 30 Sep 2012 20:23:10 +0200

    This changes -f to be the parameter for the font. Now -f is -o.

    The parameters were reordered according to the alphabet too.
    Diffstat:
    Mst.1 | 33+++++++++++++++++++++------------
    Mst.c | 42++++++++++++++++++++++++++----------------

    2 files changed, 47 insertions(+), 28 deletions(-)
    diff --git a/st.1 b/st.1
    @@ -5,15 +5,17 @@ st \- simple terminal
     .B st
     .RB [ \-c
     .IR class ]
    +.RB [ \-f
    +.IR font ]
     .RB [ \-g
     .IR geometry ]
    +.RB [ \-o
    +.IR file ]
     .RB [ \-t
     .IR title ]
     .RB [ \-w
     .IR windowid ]
     .RB [ \-v ]
    -.RB [ \-f
    -.IR file ]
     .RB [ \-e
     .IR command ...]
     .SH DESCRIPTION
    @@ -21,26 +23,33 @@ st \- simple terminal
     is a simple terminal emulator.
     .SH OPTIONS
     .TP
    -.BI \-t " title"
    -defines the window title (default 'st').
    -.TP
     .BI \-c " class"
     defines the window class (default $TERM).
     .TP
    +.BI \-f " font"
    +defines the
    +.I font
    +to use when st is run.
    +.TP
    +.BI \-g " geometry"
    +defines the X11 geometry string, which will fixate the height and width of st.
    +.TP
    +.BI \-o " file"
    +writes all the I/O to
    +.I file.
    +This feature is useful when recording st sessions. A value of "-" means
    +standard output.
    +.TP
    +.BI \-t " title"
    +defines the window title (default 'st').
    +.TP
     .BI \-w " windowid"
     embeds st within the window identified by
     .I windowid
     .TP
    -.B \-g " geometry"
    -defines the X11 geometry string, which will fixate the height and width of st.
     .B \-v
     prints version information to stderr, then exits.
     .TP
    -.BI \-f " file"
    -writes all the I/O to
    -.I file.
    -This feature is useful when recording st sessions.
    -.TP
     .BI \-e " program " [ " arguments " "... ]"
     st executes
     .I program
    diff --git a/st.c b/st.c
    @@ -39,8 +39,8 @@

     #define USAGE \
     	"st " VERSION " (c) 2010-2012 st engineers\n" \
    -	"usage: st [-t title] [-c class] [-g geometry]" \
    -	" [-w windowid] [-v] [-f file] [-e command...]\n"
    +	"usage: st [-v] [-c class] [-f font] [-g geometry] [-o file]" \
    +	" [-t title] [-w windowid] [-e command ...]\n"

     /* XEMBED messages */
     #define XEMBED_FOCUS_IN  4
    @@ -365,11 +365,12 @@ static int cmdfd;
     static pid_t pid;
     static Selection sel;
     static int iofd = -1;
    -static char **opt_cmd  = NULL;
    -static char *opt_io    = NULL;
    +static char **opt_cmd = NULL;
    +static char *opt_io = NULL;
     static char *opt_title = NULL;
     static char *opt_embed = NULL;
     static char *opt_class = NULL;
    +static char *opt_font = NULL;

     void *
     xmalloc(size_t len) {
    @@ -2087,7 +2088,7 @@ xinit(void) {
     	xw.vis = XDefaultVisual(xw.dpy, xw.scr);

     	/* font */
    -	initfonts(FONT);
    +	initfonts((opt_font != NULL)? opt_font : FONT);

     	/* XXX: Assuming same size for bold font */
     	xw.cw = dc.font.rbearing - dc.font.lbearing;
    @@ -2503,22 +2504,19 @@ main(int argc, char *argv[]) {

     	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 'c':
    -			if(++i < argc) opt_class = argv[i];
    -			break;
    -		case 'w':
    -			if(++i < argc) opt_embed = argv[i];
    -			break;
    -		case 'f':
    -			if(++i < argc) opt_io = argv[i];
    +			if(++i < argc)
    +				opt_class = argv[i];
     			break;
     		case 'e':
     			/* eat every remaining arguments */
    -			if(++i < argc) opt_cmd = &argv[i];
    +			if(++i < argc)
    +				opt_cmd = &argv[i];
     			goto run;
    +		case 'f':
    +			if(++i < argc)
    +				opt_font = argv[i];
    +			break;
     		case 'g':
     			if(++i >= argc)
     				break;
    @@ -2540,9 +2538,21 @@ main(int argc, char *argv[]) {
     			if(xw.fh != 0 && xw.fw != 0)
     				xw.isfixed = True;
     			break;
    +		case 'o':
    +			if(++i < argc)
    +				opt_io = argv[i];
    +			break;
    +		case 't':
    +			if(++i < argc)
    +				opt_title = argv[i];
    +			break;
     		case 'v':
     		default:
     			die(USAGE);
    +		case 'w':
    +			if(++i < argc)
    +				opt_embed = argv[i];
    +			break;
     		}
     	}