swanctl: Fix exit codes based on errno
authorMartin Willi <martin@revosec.ch>
Thu, 9 Oct 2014 14:48:29 +0000 (16:48 +0200)
committerMartin Willi <martin@revosec.ch>
Fri, 10 Oct 2014 09:42:18 +0000 (11:42 +0200)
As fprintf() most likely sets errno, we should save it before printing the
error message.

13 files changed:
src/swanctl/command.c
src/swanctl/commands/initiate.c
src/swanctl/commands/install.c
src/swanctl/commands/list_certs.c
src/swanctl/commands/list_conns.c
src/swanctl/commands/list_pols.c
src/swanctl/commands/list_pools.c
src/swanctl/commands/list_sas.c
src/swanctl/commands/log.c
src/swanctl/commands/reload_settings.c
src/swanctl/commands/stats.c
src/swanctl/commands/terminate.c
src/swanctl/commands/version.c

index dbe16c3..1c079ec 100644 (file)
@@ -267,9 +267,10 @@ static int call_command(command_t *cmd)
        conn = vici_connect(uri);
        if (!conn)
        {
+               ret = errno;
                command_usage("connecting to '%s' URI failed: %s",
                                          uri ?: "default", strerror(errno));
-               return errno;
+               return ret;
        }
        ret = cmd->call(conn);
        vici_disconnect(conn);
index 080dc41..eb7b6ad 100644 (file)
@@ -71,8 +71,9 @@ static int initiate(vici_conn_t *conn)
 
        if (vici_register(conn, "control-log", log_cb, &format) != 0)
        {
+               ret = errno;
                fprintf(stderr, "registering for log failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        req = vici_begin("initiate");
        if (child)
@@ -87,8 +88,9 @@ static int initiate(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "initiate request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index e8727d5..59c5c24 100644 (file)
@@ -55,8 +55,9 @@ static int manage_policy(vici_conn_t *conn, char *label)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "%s request failed: %s\n", label, strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index bee5fda..ecb6528 100644 (file)
@@ -590,6 +590,7 @@ static int list_certs(vici_conn_t *conn)
        vici_res_t *res;
        command_format_options_t format = COMMAND_FORMAT_NONE;
        char *arg, *subject = NULL, *type = NULL;
+       int ret;
 
        while (TRUE)
        {
@@ -621,9 +622,10 @@ static int list_certs(vici_conn_t *conn)
        }
        if (vici_register(conn, "list-cert", list_cb, &format) != 0)
        {
+               ret = errno;
                fprintf(stderr, "registering for certificates failed: %s\n",
                                strerror(errno));
-               return errno;
+               return ret;
        }
        req = vici_begin("list-certs");
        if (type)
@@ -637,8 +639,9 @@ static int list_certs(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "list-certs request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index ec5da4b..31ab9c4 100644 (file)
@@ -183,6 +183,7 @@ static int list_conns(vici_conn_t *conn)
        vici_res_t *res;
        command_format_options_t format = COMMAND_FORMAT_NONE;
        char *arg;
+       int ret;
 
        while (TRUE)
        {
@@ -205,16 +206,18 @@ static int list_conns(vici_conn_t *conn)
        }
        if (vici_register(conn, "list-conn", list_cb, &format) != 0)
        {
+               ret = errno;
                fprintf(stderr, "registering for connections failed: %s\n",
                                strerror(errno));
-               return errno;
+               return ret;
        }
        req = vici_begin("list-conns");
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "list-conns request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index 2317b25..f2ae221 100644 (file)
@@ -116,6 +116,7 @@ static int list_pols(vici_conn_t *conn)
        bool trap = FALSE, drop = FALSE, pass = FALSE;
        command_format_options_t format = COMMAND_FORMAT_NONE;
        char *arg, *child = NULL;
+       int ret;
 
        while (TRUE)
        {
@@ -154,9 +155,10 @@ static int list_pols(vici_conn_t *conn)
        }
        if (vici_register(conn, "list-policy", list_cb, &format) != 0)
        {
+               ret = errno;
                fprintf(stderr, "registering for policies failed: %s\n",
                                strerror(errno));
-               return errno;
+               return ret;
        }
        req = vici_begin("list-policies");
        if (child)
@@ -178,8 +180,9 @@ static int list_pols(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "list-policies request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index 17ea539..1557716 100644 (file)
@@ -68,8 +68,9 @@ static int list_pools(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "get-pools request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index 80c279c..35e7469 100644 (file)
@@ -283,7 +283,7 @@ static int list_sas(vici_conn_t *conn)
        bool noblock = FALSE;
        command_format_options_t format = COMMAND_FORMAT_NONE;
        char *arg, *ike = NULL;
-       int ike_id = 0;
+       int ike_id = 0, ret;
 
        while (TRUE)
        {
@@ -315,8 +315,9 @@ static int list_sas(vici_conn_t *conn)
        }
        if (vici_register(conn, "list-sa", list_cb, &format) != 0)
        {
+               ret = errno;
                fprintf(stderr, "registering for SAs failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        req = vici_begin("list-sas");
        if (ike)
@@ -334,8 +335,9 @@ static int list_sas(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "list-sas request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index 99ba328..d7082bf 100644 (file)
@@ -50,6 +50,7 @@ static int logcmd(vici_conn_t *conn)
 {
        command_format_options_t format = COMMAND_FORMAT_NONE;
        char *arg;
+       int ret;
 
        while (TRUE)
        {
@@ -73,8 +74,9 @@ static int logcmd(vici_conn_t *conn)
 
        if (vici_register(conn, "log", log_cb, &format) != 0)
        {
+               ret = errno;
                fprintf(stderr, "registering for log failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
 
        wait_sigint();
index ecd6338..efad130 100644 (file)
@@ -49,8 +49,9 @@ static int reload_settings(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "reload-settings request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index b5425f5..a28ca83 100644 (file)
@@ -23,6 +23,7 @@ static int stats(vici_conn_t *conn)
        vici_res_t *res;
        char *arg;
        command_format_options_t format = COMMAND_FORMAT_NONE;
+       int ret;
 
        while (TRUE)
        {
@@ -48,8 +49,9 @@ static int stats(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "stats request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index 689ba4d..8b3233c 100644 (file)
@@ -80,8 +80,9 @@ static int terminate(vici_conn_t *conn)
 
        if (vici_register(conn, "control-log", log_cb, &format) != 0)
        {
+               ret = errno;
                fprintf(stderr, "registering for log failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        req = vici_begin("terminate");
        if (child)
@@ -108,8 +109,9 @@ static int terminate(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "terminate request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {
index 4f24a0f..0c499e4 100644 (file)
@@ -24,6 +24,7 @@ static int version(vici_conn_t *conn)
        char *arg;
        bool daemon = FALSE;
        command_format_options_t format = COMMAND_FORMAT_NONE;
+       int ret;
 
        while (TRUE)
        {
@@ -58,8 +59,9 @@ static int version(vici_conn_t *conn)
        res = vici_submit(req, conn);
        if (!res)
        {
+               ret = errno;
                fprintf(stderr, "version request failed: %s\n", strerror(errno));
-               return errno;
+               return ret;
        }
        if (format & COMMAND_FORMAT_RAW)
        {