summaryrefslogtreecommitdiffstats
path: root/xrdp
diff options
context:
space:
mode:
authormetalefty <meta@vmeta.jp>2018-04-13 14:49:26 +0900
committerGitHub <noreply@github.com>2018-04-13 14:49:26 +0900
commitf52f632e21e3206295934706ac4091c0561862fa (patch)
tree5cd243b67deb4d28d0eac49e676d596f68abfefc /xrdp
parent3b5b7a59351757e3983d54faf754328b44d55990 (diff)
parent2eb4be426b2b7e803bac71c8a3562301c5d0f42b (diff)
downloadxrdp-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.c71
-rw-r--r--xrdp/xrdp.h4
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*