]> git.armaanb.net Git - opendoas.git/blobdiff - doas.c
Add configure script
[opendoas.git] / doas.c
diff --git a/doas.c b/doas.c
index 9384f55417d5b13e454d4bba8f82ac54b8eca514..04affe785e33a760627cd61bedf6d17401113642 100644 (file)
--- a/doas.c
+++ b/doas.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: doas.c,v 1.32 2015/07/29 00:00:31 tedu Exp $ */
+/* $OpenBSD: doas.c,v 1.33 2015/07/30 17:04:33 tedu Exp $ */
 /*
  * Copyright (c) 2015 Ted Unangst <tedu@openbsd.org>
  *
 #include <syslog.h>
 #include <errno.h>
 
-#include "openbsd.h"
+#include "includes.h"
 
 #include "doas.h"
+#include "version.h"
+
+static void __dead
+version(void)
+{
+       fprintf(stderr, "doas: version %s built %s\n", VERSION, __DATE__);
+       exit(1);
+}
 
 static void __dead
 usage(void)
 {
-       fprintf(stderr, "usage: doas [-ns] [-C config] [-u user] command [args]\n");
+       fprintf(stderr, "usage: doas [-nsv] [-C config] [-u user] command [args]\n");
        exit(1);
 }
 
@@ -45,9 +53,11 @@ arraylen(const char **arr)
 {
        size_t cnt = 0;
 
-       while (*arr) {
-               cnt++;
-               arr++;
+       if (arr) {
+               while (*arr) {
+                       cnt++;
+                       arr++;
+               }
        }
        return cnt;
 }
@@ -328,9 +338,11 @@ main(int argc, char **argv, char **envp)
        int i, ch;
        int sflag = 0;
        int nflag = 0;
+       int vflag = 0;
 
        uid = getuid();
-       while ((ch = getopt(argc, argv, "C:nsu:")) != -1) {
+
+       while ((ch = getopt(argc, argv, "C:nsu:v")) != -1) {
                switch (ch) {
                case 'C':
                        confpath = optarg;
@@ -345,6 +357,9 @@ main(int argc, char **argv, char **envp)
                case 's':
                        sflag = 1;
                        break;
+               case 'v':
+                       vflag = 1;
+                       break;
                default:
                        usage();
                        break;
@@ -353,13 +368,15 @@ main(int argc, char **argv, char **envp)
        argv += optind;
        argc -= optind;
 
+       if (vflag)
+               version();
+
        if (confpath) {
                if (sflag)
                        usage();
        } else if ((!sflag && !argc) || (sflag && argc))
                usage();
 
-       uid = getuid();
        pw = getpwuid(uid);
        if (!pw)
                err(1, "getpwuid failed");