summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2014-07-30 17:05:27 +0200
committerStef Walter <stefw@redhat.com>2014-09-25 09:46:53 +0200
commitdec130f0ced2c9145f3f72e423023e00b1e3113f (patch)
tree40b34e266bc55aac31b727bf849bd48211a34414
parent59a66c779c9c56c0d2169317b52641dcbc48d29b (diff)
downloadp11-kit-dec130f0ced2c9145f3f72e423023e00b1e3113f.tar.gz
remote: added option to run in foreground
-rw-r--r--p11-kit/p11-kit.c8
-rw-r--r--p11-kit/remote.c11
-rw-r--r--p11-kit/remote.h3
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