diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-01-05 19:35:49 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-01-05 19:35:49 +0200 |
commit | 9dbd617046f19979d8c8ed9e31e4b71d18e20235 (patch) | |
tree | e7afc6351c5c6335390f8a802cae7a566b02bc7f /src | |
parent | 7dd7f4e2d7a5eaed676651caf456c1de0704b7cd (diff) | |
download | pies-9dbd617046f19979d8c8ed9e31e4b71d18e20235.tar.gz pies-9dbd617046f19979d8c8ed9e31e4b71d18e20235.tar.bz2 |
piesctl: normalize exit codes.
* src/piesctl.c (EX_OK, EX_NOTFOUND): New defines.
(exit_status): New global.
(all calls): Use EX_OK instead of literal 0
(shttp_process): Set exit_status on errors.
(com_list, com_id): Return void. Check response code.
(com_stop, com_start)
(com_restart, com_reboot): Return void.
(ctlcom_t): Return void.
(main): Return exit_status
Diffstat (limited to 'src')
-rw-r--r-- | src/piesctl.c | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/src/piesctl.c b/src/piesctl.c index fcc346a..d8afbfe 100644 --- a/src/piesctl.c +++ b/src/piesctl.c @@ -46,6 +46,11 @@ int preprocess_only; int verbose; int dump; +#define EX_OK 0 +#define EX_NOTFOUND 1 + +int exit_status = EX_OK; + static void config_help (void); #include "piesctl-cl.h" @@ -127,7 +132,7 @@ parse_config () { if (preprocess_only) exit (grecs_preproc_run (file_name, grecs_preprocessor) - ? EX_CONFIG : 0); + ? EX_CONFIG : EX_OK); if (verbose) printf (_("%s: reading configuration from %s\n"), program_name, file_name); @@ -154,7 +159,7 @@ parse_config () program_name, file_name); if (preprocess_only) exit (grecs_preproc_run (file_name, grecs_preprocessor) - ? EX_CONFIG : 0); + ? EX_CONFIG : EX_OK); tree = grecs_parse (file_name); node = grecs_find_node (tree, "/control/socket"); if (node) @@ -983,6 +988,7 @@ shttp_process (struct shttp_connection *conn, int method, char const *uri) case 404: /* Not found */ case 409: /* Conflict */ + exit_status = EX_NOTFOUND; shttp_print_error (conn); return; @@ -1440,7 +1446,7 @@ parse_condition_to_uri (char const *base, int argc, char **argv, int mandatory) return ret; } -static int +static void com_list (struct shttp_connection *conn, int argc, char **argv) { char *uri = parse_condition_to_uri ("/programs/select", argc, argv, 0); @@ -1448,7 +1454,8 @@ com_list (struct shttp_connection *conn, int argc, char **argv) shttp_io_init (&conn->req); shttp_process (conn, METH_GET, uri); grecs_free (uri); - if (!dump && conn->result && conn->result->type == json_arr) + if (conn->resp.code == 200 && !dump + && conn->result && conn->result->type == json_arr) { size_t i, n = json_array_size (conn->result); @@ -1460,7 +1467,6 @@ com_list (struct shttp_connection *conn, int argc, char **argv) print_comp (stdout, v, i); } } - return 0; } static int @@ -1523,7 +1529,7 @@ shttp_print_response_status (struct shttp_connection *conn) } } -static int +static void com_stop (struct shttp_connection *conn, int argc, char **argv) { char *uri = parse_condition_to_uri ("/programs/select", argc, argv, 1); @@ -1532,10 +1538,9 @@ com_stop (struct shttp_connection *conn, int argc, char **argv) shttp_process (conn, METH_DELETE, uri); grecs_free (uri); shttp_print_response_status (conn); - return 0; } -static int +static void com_start (struct shttp_connection *conn, int argc, char **argv) { char *uri = parse_condition_to_uri ("/programs/select", argc, argv, 1); @@ -1544,10 +1549,9 @@ com_start (struct shttp_connection *conn, int argc, char **argv) shttp_process (conn, METH_PUT, uri); grecs_free (uri); shttp_print_response_status (conn); - return 0; } -static int +static void com_restart (struct shttp_connection *conn, int argc, char **argv) { shttp_io_init (&conn->req); @@ -1555,7 +1559,6 @@ com_restart (struct shttp_connection *conn, int argc, char **argv) conn->req.content_length = strlen (conn->req.content); shttp_process (conn, METH_POST, "/programs/select"); shttp_print_response_status (conn); - return 0; } static void @@ -1618,7 +1621,7 @@ find_id_fmt (char const *name) return NULL; } -static int +static void com_id (struct shttp_connection *conn, int argc, char **argv) { struct json_value *v; @@ -1628,7 +1631,7 @@ com_id (struct shttp_connection *conn, int argc, char **argv) { shttp_io_init (&conn->req); shttp_process (conn, METH_GET, "/instance"); - if (!dump) + if (conn->resp.code == 200 && !dump) for (fmt = id_fmt; fmt->name; fmt++) { v = shttp_getval (conn, fmt->name, fmt->type); @@ -1651,48 +1654,45 @@ com_id (struct shttp_connection *conn, int argc, char **argv) grecs_asprintf (&buf, &size, "/instance/%s", argv[i]); shttp_io_init (&conn->req); shttp_process (conn, METH_GET, buf); - if (dump) - continue; - fmt = find_id_fmt (argv[i]); - if (fmt) + if (conn->resp.code == 200 && !dump) { - v = shttp_getval (conn, fmt->name, fmt->type); - if (v) + fmt = find_id_fmt (argv[i]); + if (fmt) + { + v = shttp_getval (conn, fmt->name, fmt->type); + if (v) + { + printf ("%s: ", fmt->name); + fmt->format (v); + putchar ('\n'); + } + } + else if (json_object_get (conn->result, argv[i], &v) == 0) { - printf ("%s: ", fmt->name); - fmt->format (v); + printf ("%s: ", argv[i]); + print_json (stdout, v); putchar ('\n'); } } - else if (json_object_get (conn->result, argv[i], &v) == 0) - { - printf ("%s: ", argv[i]); - print_json (stdout, v); - putchar ('\n'); - } } } - - return 0; } -static int +static void com_shutdown (struct shttp_connection *conn, int argc, char **argv) { shttp_io_init (&conn->req); shttp_process (conn, METH_DELETE, "/instance/PID"); - return 0; } -static int +static void com_reboot (struct shttp_connection *conn, int argc, char **argv) { shttp_io_init (&conn->req); shttp_process (conn, METH_PUT, "/instance/PID"); - return 0; } -typedef int (*ctlcom_t) (struct shttp_connection *, int, char **); +typedef void (*ctlcom_t) (struct shttp_connection *, int, char **); struct comtab { @@ -1796,7 +1796,7 @@ command_help (FILE *fp) int main (int argc, char **argv) { - int i, rc; + int i; struct shttp_connection *conn; struct comtab *cmd; @@ -1826,7 +1826,7 @@ main (int argc, char **argv) cmd = find_command (argv[0]); argv[0] = (char*) cmd->name; - rc = cmd->command (conn, argc, argv); + cmd->command (conn, argc, argv); shttp_close (conn); - return rc; + return exit_status; } |