GUACAMOLE-351: Add "-v" option which causes guacd to print its version information and exit.

This commit is contained in:
Michael Jumper 2018-02-07 13:41:22 -08:00
parent f4f5b4e65a
commit 3b327378eb
5 changed files with 27 additions and 2 deletions

View File

@ -32,7 +32,7 @@ int guacd_conf_parse_args(guacd_config* config, int argc, char** argv) {
/* Parse arguments */ /* Parse arguments */
int opt; 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 */ /* -l: Bind port */
if (opt == 'l') { if (opt == 'l') {
@ -51,6 +51,11 @@ int guacd_conf_parse_args(guacd_config* config, int argc, char** argv) {
config->foreground = 1; config->foreground = 1;
} }
/* -v: Print version and exit */
else if (opt == 'v') {
config->print_version = 1;
}
/* -p: PID file */ /* -p: PID file */
else if (opt == 'p') { else if (opt == 'p') {
free(config->pidfile); free(config->pidfile);
@ -105,7 +110,8 @@ int guacd_conf_parse_args(guacd_config* config, int argc, char** argv) {
" [-C CERTIFICATE_FILE]" " [-C CERTIFICATE_FILE]"
" [-K PEM_FILE]" " [-K PEM_FILE]"
#endif #endif
" [-f]\n", argv[0]); " [-f]"
" [-v]\n", argv[0]);
return 1; return 1;
} }

View File

@ -180,6 +180,7 @@ guacd_config* guacd_conf_load() {
conf->bind_port = strdup("4822"); conf->bind_port = strdup("4822");
conf->pidfile = NULL; conf->pidfile = NULL;
conf->foreground = 0; conf->foreground = 0;
conf->print_version = 0;
conf->max_log_level = GUAC_LOG_INFO; conf->max_log_level = GUAC_LOG_INFO;
#ifdef ENABLE_SSL #ifdef ENABLE_SSL

View File

@ -49,6 +49,11 @@ typedef struct guacd_config {
*/ */
int foreground; int foreground;
/**
* Whether guacd should simply print its version information and exit.
*/
int print_version;
#ifdef ENABLE_SSL #ifdef ENABLE_SSL
/** /**
* SSL certificate file. * SSL certificate file.

View File

@ -280,6 +280,13 @@ int main(int argc, char* argv[]) {
if (config == NULL || guacd_conf_parse_args(config, argc, argv)) if (config == NULL || guacd_conf_parse_args(config, argc, argv))
exit(EXIT_FAILURE); 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 */ /* Init logging as early as possible */
guacd_log_level = config->max_log_level; guacd_log_level = config->max_log_level;
openlog(GUACD_LOG_NAME, LOG_PID, LOG_DAEMON); openlog(GUACD_LOG_NAME, LOG_PID, LOG_DAEMON);

View File

@ -30,6 +30,7 @@ guacd \- Guacamole proxy daemon
[\fB-C\fR \fICERTIFICATE FILE\fR] [\fB-C\fR \fICERTIFICATE FILE\fR]
[\fB-K\fR \fIKEY FILE\fR] [\fB-K\fR \fIKEY FILE\fR]
[\fB-f\fR] [\fB-f\fR]
[\fB-v\fR]
. .
.SH DESCRIPTION .SH DESCRIPTION
.B guacd .B guacd
@ -80,6 +81,11 @@ Causes
.B guacd .B guacd
to run in the foreground, rather than automatically forking into the to run in the foreground, rather than automatically forking into the
background. background.
.TP
\fB\-v\fR
Causes
.B guacd
to simply print its version information and exit.
. .
.SH SSL/TLS OPTIONS .SH SSL/TLS OPTIONS
If libssl was present at the time If libssl was present at the time