GUACAMOLE-351: Add "-v" option which causes guacd to print its version information and exit.
diff --git a/src/guacd/conf-args.c b/src/guacd/conf-args.c
index 1e92e86..239eb3a 100644
--- a/src/guacd/conf-args.c
+++ b/src/guacd/conf-args.c
@@ -32,7 +32,7 @@
/* Parse arguments */
int opt;
- while ((opt = getopt(argc, argv, "l:b:p:L:C:K:f")) != -1) {
+ while ((opt = getopt(argc, argv, "l:b:p:L:C:K:fv")) != -1) {
/* -l: Bind port */
if (opt == 'l') {
@@ -51,6 +51,11 @@
config->foreground = 1;
}
+ /* -v: Print version and exit */
+ else if (opt == 'v') {
+ config->print_version = 1;
+ }
+
/* -p: PID file */
else if (opt == 'p') {
free(config->pidfile);
@@ -105,7 +110,8 @@
" [-C CERTIFICATE_FILE]"
" [-K PEM_FILE]"
#endif
- " [-f]\n", argv[0]);
+ " [-f]"
+ " [-v]\n", argv[0]);
return 1;
}
diff --git a/src/guacd/conf-file.c b/src/guacd/conf-file.c
index b99a852..460ec95 100644
--- a/src/guacd/conf-file.c
+++ b/src/guacd/conf-file.c
@@ -180,6 +180,7 @@
conf->bind_port = strdup("4822");
conf->pidfile = NULL;
conf->foreground = 0;
+ conf->print_version = 0;
conf->max_log_level = GUAC_LOG_INFO;
#ifdef ENABLE_SSL
diff --git a/src/guacd/conf.h b/src/guacd/conf.h
index 3ecccb4..f444cee 100644
--- a/src/guacd/conf.h
+++ b/src/guacd/conf.h
@@ -49,6 +49,11 @@
*/
int foreground;
+ /**
+ * Whether guacd should simply print its version information and exit.
+ */
+ int print_version;
+
#ifdef ENABLE_SSL
/**
* SSL certificate file.
diff --git a/src/guacd/daemon.c b/src/guacd/daemon.c
index af7b29d..054821a 100644
--- a/src/guacd/daemon.c
+++ b/src/guacd/daemon.c
@@ -280,6 +280,13 @@
if (config == NULL || guacd_conf_parse_args(config, argc, argv))
exit(EXIT_FAILURE);
+ /* If requested, simply print version and exit, without initializing the
+ * logging system, etc. */
+ if (config->print_version) {
+ printf("Guacamole proxy daemon (guacd) version " VERSION "\n");
+ exit(EXIT_SUCCESS);
+ }
+
/* Init logging as early as possible */
guacd_log_level = config->max_log_level;
openlog(GUACD_LOG_NAME, LOG_PID, LOG_DAEMON);
diff --git a/src/guacd/man/guacd.8.in b/src/guacd/man/guacd.8.in
index c5ed918..65fc9d5 100644
--- a/src/guacd/man/guacd.8.in
+++ b/src/guacd/man/guacd.8.in
@@ -30,6 +30,7 @@
[\fB-C\fR \fICERTIFICATE FILE\fR]
[\fB-K\fR \fIKEY FILE\fR]
[\fB-f\fR]
+[\fB-v\fR]
.
.SH DESCRIPTION
.B guacd
@@ -80,6 +81,11 @@
.B guacd
to run in the foreground, rather than automatically forking into the
background.
+.TP
+\fB\-v\fR
+Causes
+.B guacd
+to simply print its version information and exit.
.
.SH SSL/TLS OPTIONS
If libssl was present at the time