added -e and -t option. - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 9d82bdd94708fa2daabc0b53f8b71bca2a3c6f0a
 (DIR) parent 97695baf4f9bc3632792a3330fb46e188ef166a2
 (HTM) Author: Aurélien Aptel <aurelien.aptel@gmail.com>
       Date:   Thu,  2 Sep 2010 01:37:01 +0200
       
       added -e and -t option.
       
       Diffstat:
         M st.c                                |      36 ++++++++++++++++++++++++-------
       
       1 file changed, 28 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/st.c b/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();