From dec130f0ced2c9145f3f72e423023e00b1e3113f Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Wed, 30 Jul 2014 17:05:27 +0200 Subject: remote: added option to run in foreground --- p11-kit/p11-kit.c | 8 +++++++- p11-kit/remote.c | 11 +++++++---- p11-kit/remote.h | 3 ++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/p11-kit/p11-kit.c b/p11-kit/p11-kit.c index 807e4b2..0e5db29 100644 --- a/p11-kit/p11-kit.c +++ b/p11-kit/p11-kit.c @@ -141,6 +141,7 @@ p11_kit_remote (int argc, int ret, e; const struct passwd* pwd; const struct group* grp; + unsigned foreground = 1; enum { opt_verbose = 'v', @@ -150,11 +151,13 @@ p11_kit_remote (int argc, opt_group = 'g', opt_run_as_user = 'a', opt_run_as_group = 'z', + opt_foreground = 'f', }; struct option options[] = { { "verbose", no_argument, NULL, opt_verbose }, { "help", no_argument, NULL, opt_help }, + { "foreground", no_argument, NULL, opt_foreground }, { "socket", required_argument, NULL, opt_socket }, { "user", required_argument, NULL, opt_user }, { "group", required_argument, NULL, opt_group }, @@ -210,6 +213,9 @@ p11_kit_remote (int argc, } run_as_uid = pwd->pw_uid; break; + case opt_foreground: + foreground = 1; + break; case opt_help: case '?': p11_tool_usage (usages, options); @@ -259,7 +265,7 @@ p11_kit_remote (int argc, if (module == NULL) return 1; - ret = p11_kit_remote_serve_module (module, socket_file, uid, gid); + ret = p11_kit_remote_serve_module (module, socket_file, uid, gid, foreground); p11_kit_module_release (module); return ret; diff --git a/p11-kit/remote.c b/p11-kit/remote.c index c5502c9..d8f50ef 100644 --- a/p11-kit/remote.c +++ b/p11-kit/remote.c @@ -209,7 +209,8 @@ int p11_kit_remote_serve_module (CK_FUNCTION_LIST *module, const char *socket_file, uid_t uid, - gid_t gid) + gid_t gid, + unsigned foreground) { p11_virtual virt; p11_buffer options; @@ -263,9 +264,11 @@ p11_kit_remote_serve_module (CK_FUNCTION_LIST *module, } /* run as daemon */ - if (daemon(0,0) == -1) { - e = errno; - p11_message ("could not daemonize: %s", strerror(e)); + if (foreground == 0) { + if (daemon(0,0) == -1) { + e = errno; + p11_message ("could not daemonize: %s", strerror(e)); + } } rc = listen(sd, 1024); diff --git a/p11-kit/remote.h b/p11-kit/remote.h index e1bfde3..f3b2d3d 100644 --- a/p11-kit/remote.h +++ b/p11-kit/remote.h @@ -45,7 +45,8 @@ extern "C" { int p11_kit_remote_serve_module (CK_FUNCTION_LIST *module, const char *socket, - uid_t, gid_t); + uid_t, gid_t, + unsigned foreground); #endif -- cgit v1.2.1