Add '--' and concatenated parameter support. - ttabbed - Simple tabbing application for X11.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit c6b1f05d151e74197ca80c9b6363ebc28ced4951
 (DIR) parent c79e3392413da488eecb2769473989d0c2c861c9
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Thu,  9 Feb 2012 18:03:50 +0100
       
       Add '--' and concatenated parameter support.
       Diffstat:
         tabbed.c                            |      54 ++++++++++++++++++++++---------
       
       1 file changed, 38 insertions(+), 16 deletions(-)
       ---
 (DIR) diff --git a/tabbed.c b/tabbed.c
       @@ -863,30 +863,52 @@ xerror(Display *dpy, XErrorEvent *ee) {
                return xerrorxlib(dpy, ee); /* may call exit */
        }
        
       +char *argv0;
       +
        void
       -usage(char *argv0)
       +usage(void)
        {
                die("usage: %s [-dhsv] command...\n", argv0);
        }
        
        int
        main(int argc, char *argv[]) {
       -        int i, detach = 0;
       -
       -        for(i = 1; i < argc && !cmd; i++) {
       -                if(!strcmp("-v", argv[i]))
       -                        die("tabbed-"VERSION", © 2009-2011 tabbed engineers, see LICENSE for details\n");
       -                else if(!strcmp("-d", argv[i]))
       -                        detach = 1;
       -                else if(!strcmp("-s", argv[i]))
       -                        doinitspawn = False;
       -                else if(!strcmp("-h", argv[i]))
       -                        usage(argv[0]);
       -                else
       -                        setcmd(argc-i, argv+i);
       +        int detach = 0;
       +        char _argc;
       +        char **_argv;
       +
       +        for(argv0 = *argv, argv++, argc--;
       +                        argv[0] && argv[0][1] && argv[0][0] == '-';
       +                        argc--, argv++) {
       +                if(argv[0][1] == '-' && argv[0][2] == '\0') {
       +                        argv++;
       +                        argc--;
       +                        break;
       +                }
       +                for(argv[0]++, _argv = argv; argv[0][0]; argv[0]++) {
       +                        if(_argv != argv)
       +                                break;
       +                        _argc = argv[0][0];
       +                        switch(_argc) {
       +                        case 'v':
       +                                die("tabbed-"VERSION", © 2009-2011"
       +                                        " tabbed engineers, see LICENSE"
       +                                        " for details.\n");
       +                        case 's':
       +                                doinitspawn = False;
       +                                break;
       +                        case 'h':
       +                                usage();
       +                        case 'd':
       +                                detach = 1;
       +                                break;
       +                        }
       +                }
                }
       -        if(!cmd)
       -                usage(argv[0]);
       +        if(argc < 1)
       +                usage();
       +        setcmd(argc, argv);
       +
                if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
                        fprintf(stderr, "tabbed: no locale support\n");
                if(!(dpy = XOpenDisplay(NULL)))