diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-01-05 17:42:13 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-01-05 18:31:05 +0200 |
commit | 7dd7f4e2d7a5eaed676651caf456c1de0704b7cd (patch) | |
tree | 2073caae8a686914c84b5bde8bcdf59331240ea6 /src/ctl.c | |
parent | 6ac0f1e8e19922c63a1542740a7c88116989bb7c (diff) | |
download | pies-7dd7f4e2d7a5eaed676651caf456c1de0704b7cd.tar.gz pies-7dd7f4e2d7a5eaed676651caf456c1de0704b7cd.tar.bz2 |
Include argv in the output of ctl id command.
* ctl.c (res_instance): Include "argv" in the return json.
Use pies_master_argv[0] to report binary path.
* pies.c (pies_master_argv,pies_master_argc): New globals.
(main): Initialize them.
Refuse to restart unless argv[0] begins with a slash.
* pies.h (pies_master_argv,pies_master_argc): New globals.
* piesctl.c (com_id): Rewrite output formatting.
Diffstat (limited to 'src/ctl.c')
-rw-r--r-- | src/ctl.c | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -1296,27 +1296,43 @@ static void idfmt_pid (struct ctlio *io, char const *name, void *ptr) { json_object_set_number (io->output.reply, name, getpid ()); } static void +idfmt_argv (struct ctlio *io, char const *name, void *ptr) +{ + struct json_value *ar = json_new_array (); + size_t i; + + for (i = 0; i < pies_master_argc; i++) + json_array_append (ar, json_new_string (pies_master_argv[i])); + json_object_set (io->output.reply, name, ar); +} + +static void +idfmt_binary (struct ctlio *io, char const *name, void *ptr) +{ + json_object_set_string (io->output.reply, name, "%s", pies_master_argv[0]); +} + +static void res_instance (struct ctlio *io, enum http_method meth, char const *uri, struct json_value *req) { static struct idparam { char *name; void (*fmt) (struct ctlio *, char const *, void *); void *data; } idparam[] = { { "package", idfmt_string, PACKAGE_NAME }, { "version", idfmt_string, PACKAGE_VERSION }, -#if HAVE_DECL_PROGRAM_INVOCATION_NAME - { "binary", idfmt_string_ptr, &program_invocation_name }, -#endif + { "binary", idfmt_binary, NULL }, { "PID", idfmt_pid, NULL }, { "instance", idfmt_string_ptr, &instance }, + { "argv", idfmt_argv, NULL }, { NULL } }; struct idparam *p; io->output.reply = json_reply_create (); if (uri) |