aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-01-05 19:35:49 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-01-05 19:35:49 +0200
commit9dbd617046f19979d8c8ed9e31e4b71d18e20235 (patch)
treee7afc6351c5c6335390f8a802cae7a566b02bc7f /src
parent7dd7f4e2d7a5eaed676651caf456c1de0704b7cd (diff)
downloadpies-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.c74
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;
}

Return to:

Send suggestions and report system problems to the System administrator.