diff options
author | metalefty <meta@vmeta.jp> | 2018-04-13 14:49:26 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-13 14:49:26 +0900 |
commit | f52f632e21e3206295934706ac4091c0561862fa (patch) | |
tree | 5cd243b67deb4d28d0eac49e676d596f68abfefc /xrdp | |
parent | 3b5b7a59351757e3983d54faf754328b44d55990 (diff) | |
parent | 2eb4be426b2b7e803bac71c8a3562301c5d0f42b (diff) | |
download | xrdp-proprietary-f52f632e21e3206295934706ac4091c0561862fa.tar.gz xrdp-proprietary-f52f632e21e3206295934706ac4091c0561862fa.zip |
Merge pull request #1096 from metalefty/version_info
Show OpenSSL version to --version
Diffstat (limited to 'xrdp')
-rw-r--r-- | xrdp/xrdp.c | 71 | ||||
-rw-r--r-- | xrdp/xrdp.h | 4 |
2 files changed, 52 insertions, 23 deletions
diff --git a/xrdp/xrdp.c b/xrdp/xrdp.c index 65bd40a0..b17a39f0 100644 --- a/xrdp/xrdp.c +++ b/xrdp/xrdp.c @@ -46,6 +46,31 @@ static long g_sync_param2 = 0; static long (*g_sync_func)(long param1, long param2); /*****************************************************************************/ +void +print_version(void) +{ + g_writeln("xrdp %s", PACKAGE_VERSION); + g_writeln(" A Remote Desktop Protocol Server."); + g_writeln(" Copyright (C) 2004-2018 Jay Sorg, " + "Neutrino Labs, and all contributors."); + g_writeln(" See https://github.com/neutrinolabs/xrdp for more information."); + g_writeln("%s", ""); + g_writeln(" Compiled with %s", get_openssl_version()); +} + +/*****************************************************************************/ +void +print_help(void) +{ + g_writeln("Usage: xrdp [options]"); + g_writeln(" -h, --help show help"); + g_writeln(" -n, --nodaemon don't fork into background"); + g_writeln(" -k, --kill shut down xrdp"); + g_writeln(" -p, --port tcp listen port"); + g_writeln(" -f, --fork fork on new connection"); +} + +/*****************************************************************************/ /* This function is used to run a function from the main thread. Sync_func is the function pointer that will run from main thread The function can have two long in parameters and must return long */ @@ -217,6 +242,14 @@ g_process_waiting_function(void) } /*****************************************************************************/ +/** + * + * @brief Command line argument parser + * @param number of command line arguments + * @param pointer array of commandline arguments + * @return 0 on success, n on nth argument is unknown + * + */ int xrdp_process_params(int argc, char **argv, struct xrdp_startup_params *startup_params) @@ -290,9 +323,9 @@ xrdp_process_params(int argc, char **argv, startup_params->fork = 1; g_writeln("--fork parameter found, ini override"); } - else + else /* unknown option */ { - return 1; + return index; } index++; @@ -377,6 +410,7 @@ main(int argc, char **argv) int no_daemon; char text[256]; char pid_file[256]; + int errored_argc; g_init("xrdp"); ssl_init(); @@ -391,13 +425,17 @@ main(int argc, char **argv) startup_params = (struct xrdp_startup_params *) g_malloc(sizeof(struct xrdp_startup_params), 1); - if (xrdp_process_params(argc, argv, startup_params) != 0) + errored_argc = xrdp_process_params(argc, argv, startup_params); + if (errored_argc > 0) { - g_writeln("Unknown Parameter"); - g_writeln("xrdp -h for help"); + print_version(); g_writeln("%s", ""); + print_help(); + g_writeln("%s", ""); + + g_writeln("Unknown option: %s", argv[errored_argc]); g_deinit(); - g_exit(0); + g_exit(1); } g_snprintf(pid_file, 255, "%s/xrdp.pid", XRDP_PID_PATH); @@ -405,30 +443,17 @@ main(int argc, char **argv) if (startup_params->help) { + print_version(); g_writeln("%s", ""); - g_writeln("xrdp: A Remote Desktop Protocol server."); - g_writeln("Copyright (C) Jay Sorg 2004-2014"); - g_writeln("See http://www.xrdp.org for more information."); - g_writeln("%s", ""); - g_writeln("Usage: xrdp [options]"); - g_writeln(" -h, --help show help"); - g_writeln(" -n, --nodaemon don't fork into background"); - g_writeln(" -k, --kill shut down xrdp"); - g_writeln(" -p, --port tcp listen port"); - g_writeln(" -f, --fork fork on new connection"); - g_writeln("%s", ""); + print_help(); + g_deinit(); g_exit(0); } if (startup_params->version) { - g_writeln("%s", ""); - g_writeln("xrdp: A Remote Desktop Protocol server."); - g_writeln("Copyright (C) Jay Sorg 2004-2014"); - g_writeln("See http://www.xrdp.org for more information."); - g_writeln("Version %s", PACKAGE_VERSION); - g_writeln("%s", ""); + print_version(); g_deinit(); g_exit(0); } diff --git a/xrdp/xrdp.h b/xrdp/xrdp.h index 5201dada..65e5c4f6 100644 --- a/xrdp/xrdp.h +++ b/xrdp/xrdp.h @@ -49,6 +49,10 @@ tbus g_get_sync_event(void); void g_process_waiting_function(void); +void +print_version(void); +void +print_help(void); /* xrdp_cache.c */ struct xrdp_cache* |