diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2014-07-30 17:05:27 +0200 |
---|---|---|
committer | Stef Walter <stefw@redhat.com> | 2014-09-25 09:46:53 +0200 |
commit | dec130f0ced2c9145f3f72e423023e00b1e3113f (patch) | |
tree | 40b34e266bc55aac31b727bf849bd48211a34414 | |
parent | 59a66c779c9c56c0d2169317b52641dcbc48d29b (diff) | |
download | p11-kit-dec130f0ced2c9145f3f72e423023e00b1e3113f.tar.gz |
remote: added option to run in foreground
-rw-r--r-- | p11-kit/p11-kit.c | 8 | ||||
-rw-r--r-- | p11-kit/remote.c | 11 | ||||
-rw-r--r-- | 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 |