-/* $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);
}
{
size_t cnt = 0;
- while (*arr) {
- cnt++;
- arr++;
+ if (arr) {
+ while (*arr) {
+ cnt++;
+ arr++;
+ }
}
return cnt;
}
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;
case 's':
sflag = 1;
break;
+ case 'v':
+ vflag = 1;
+ break;
default:
usage();
break;
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");