SMOLNET PORTAL home about changes
iAdding more flexible ARGBEGIN parameter handling. - thinglaunch - A simple command and password promtper for X11.	Err	bitreich.org	70
hgit clone git://bitreich.org/thinglaunch	URL:git://bitreich.org/thinglaunch	bitreich.org	70
1Log	/scm/thinglaunch/log.gph	bitreich.org	70
1Files	/scm/thinglaunch/files.gph	bitreich.org	70
1Refs	/scm/thinglaunch/refs.gph	bitreich.org	70
1Tags	/scm/thinglaunch/tag	bitreich.org	70
1LICENSE	/scm/thinglaunch/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 1d85b767bee1ecfbb90bf78ad3a990de84b0fb25	/scm/thinglaunch/commit/1d85b767bee1ecfbb90bf78ad3a990de84b0fb25.gph	bitreich.org	70
1parent 7445d3804d48a3cd0e1f2348dea8c354a9df3b49	/scm/thinglaunch/commit/7445d3804d48a3cd0e1f2348dea8c354a9df3b49.gph	bitreich.org	70
hAuthor: Christoph Lohmann <20h@r-36.net>	URL:mailto:20h@r-36.net	bitreich.org	70
iDate:   Sat,  4 Aug 2012 22:16:33 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iAdding more flexible ARGBEGIN parameter handling.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       2 +-	Err	bitreich.org	70
i  A arg.h                               |      41 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  M thinglaunch.c                       |      44 +++++++++++++------------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 61 insertions(+), 26 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/thinglaunch/file/Makefile.gph	bitreich.org	70
i@@ -39,7 +39,7 @@ clean:	Err	bitreich.org	70
i dist: clean	Err	bitreich.org	70
i         @echo creating dist tarball	Err	bitreich.org	70
i         @mkdir -p ${NAME}-${VERSION}	Err	bitreich.org	70
i-        @cp -R LICENSE LICENSE.orig ${NAME}.1 Makefile config.mk \	Err	bitreich.org	70
i+        @cp -R LICENSE LICENSE.orig arg.h ${NAME}.1 Makefile config.mk \	Err	bitreich.org	70
i                 ${SRC} *.h ${NAME}-${VERSION}	Err	bitreich.org	70
i         @tar -cf ${NAME}-${VERSION}.tar ${NAME}-${VERSION}	Err	bitreich.org	70
i         @gzip ${NAME}-${VERSION}.tar	Err	bitreich.org	70
1diff --git a/arg.h b/arg.h	/scm/thinglaunch/file/arg.h.gph	bitreich.org	70
i@@ -0,0 +1,41 @@	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Copy me if you can.	Err	bitreich.org	70
i+ * by 20h	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#ifndef __ARG_H__	Err	bitreich.org	70
i+#define __ARG_H__	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+extern char *argv0;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#define USED(x) ((void)(x))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#define ARGBEGIN        for (argv0 = *argv, argv++, argc--;\	Err	bitreich.org	70
i+                                        argv[0] && argv[0][1]\	Err	bitreich.org	70
i+                                        && argv[0][0] == '-';\	Err	bitreich.org	70
i+                                        argc--, argv++) {\	Err	bitreich.org	70
i+                                char _argc;\	Err	bitreich.org	70
i+                                char **_argv;\	Err	bitreich.org	70
i+                                if (argv[0][1] == '-' && argv[0][2] == '\0') {\	Err	bitreich.org	70
i+                                        argv++;\	Err	bitreich.org	70
i+                                        argc--;\	Err	bitreich.org	70
i+                                        break;\	Err	bitreich.org	70
i+                                }\	Err	bitreich.org	70
i+                                for (argv[0]++, _argv = argv; argv[0][0];\	Err	bitreich.org	70
i+                                                argv[0]++) {\	Err	bitreich.org	70
i+                                        if (_argv != argv)\	Err	bitreich.org	70
i+                                                break;\	Err	bitreich.org	70
i+                                        _argc = argv[0][0];\	Err	bitreich.org	70
i+                                        switch (_argc)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#define ARGEND                        }\	Err	bitreich.org	70
i+                                USED(_argc);\	Err	bitreich.org	70
i+                        }\	Err	bitreich.org	70
i+                        USED(argv);\	Err	bitreich.org	70
i+                        USED(argc);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#define EARGF(x)        ((argv[1] == NULL)? ((x), abort(), (char *)0) :\	Err	bitreich.org	70
i+                        (argc--, argv++, argv[0]))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#endif	Err	bitreich.org	70
i+	Err	bitreich.org	70
1diff --git a/thinglaunch.c b/thinglaunch.c	/scm/thinglaunch/file/thinglaunch.c.gph	bitreich.org	70
i@@ -20,6 +20,7 @@	Err	bitreich.org	70
i #include <libgen.h>	Err	bitreich.org	70
i #include <wchar.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+#include "arg.h"	Err	bitreich.org	70
i #include "config.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i unsigned long getcolor(const char *colstr);	Err	bitreich.org	70
i@@ -46,6 +47,8 @@ int screen, issecret = 0, tostdout = 0;	Err	bitreich.org	70
i unsigned long fgcol, bgcol;	Err	bitreich.org	70
i static char *name = "thinglaunch";	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+char *argv0;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i #define MAXCMD 255	Err	bitreich.org	70
i #define WINWIDTH 640	Err	bitreich.org	70
i #define WINHEIGHT 25	Err	bitreich.org	70
i@@ -56,7 +59,7 @@ wchar_t secret[MAXCMD+1];	Err	bitreich.org	70
i char cbuf[MAXCMD*4+1];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i-usage(char *argv0)	Err	bitreich.org	70
i+usage(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         fprintf(stderr, "usage: %s [-hos] [-p prompt]\n", argv0);	Err	bitreich.org	70
i         exit(1);	Err	bitreich.org	70
i@@ -65,8 +68,6 @@ usage(char *argv0)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i main(int argc, char *argv[])	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int i;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i         if (strstr(argv[0], "thingaskpass")) {	Err	bitreich.org	70
i                 issecret = 1;	Err	bitreich.org	70
i                 tostdout = 1;	Err	bitreich.org	70
i@@ -83,28 +84,21 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (argc > 1) {	Err	bitreich.org	70
i-                for (i = 1; argv[i]; i++) {	Err	bitreich.org	70
i-                        if (argv[i][0] == '-') {	Err	bitreich.org	70
i-                                switch (argv[i][1]) {	Err	bitreich.org	70
i-                                case 'o':	Err	bitreich.org	70
i-                                        tostdout = 1;	Err	bitreich.org	70
i-                                        break;	Err	bitreich.org	70
i-                                case 's':	Err	bitreich.org	70
i-                                        issecret = 1;	Err	bitreich.org	70
i-                                        break;	Err	bitreich.org	70
i-                                case 'p':	Err	bitreich.org	70
i-                                        if (!argv[i+1])	Err	bitreich.org	70
i-                                                usage(argv[0]);	Err	bitreich.org	70
i-                                        prompt = argv[i+1];	Err	bitreich.org	70
i-                                        i++;	Err	bitreich.org	70
i-                                        break;	Err	bitreich.org	70
i-                                default:	Err	bitreich.org	70
i-                                case 'h':	Err	bitreich.org	70
i-                                        usage(argv[0]);	Err	bitreich.org	70
i-                                        break;	Err	bitreich.org	70
i-                                }	Err	bitreich.org	70
i-                        }	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i+                ARGBEGIN {	Err	bitreich.org	70
i+                case 'o':	Err	bitreich.org	70
i+                        tostdout = 1;	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                case 's':	Err	bitreich.org	70
i+                        issecret = 1;	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                case 'p':	Err	bitreich.org	70
i+                        prompt = EARGF(usage());	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                default:	Err	bitreich.org	70
i+                case 'h':	Err	bitreich.org	70
i+                        usage();	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                } ARGEND;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         bzero(command, sizeof(command));	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/thinglaunch/commit/1d85b767be...
Content-Typetext/plain; charset=utf-8