]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - ip/ip.c
ip: fix exit codes
[mirror_iproute2.git] / ip / ip.c
diff --git a/ip/ip.c b/ip/ip.c
index 7f0c46887ffeb38b79e8e3e00398759bf1257efb..4e609af944015b1895cb5fff006a4ba2446515de 100644 (file)
--- a/ip/ip.c
+++ b/ip/ip.c
@@ -91,31 +91,32 @@ static int do_cmd(const char *argv0, int argc, char **argv)
        const struct cmd *c;
 
        for (c = cmds; c->cmd; ++c) {
-               if (matches(argv0, c->cmd) == 0)
-                       return c->func(argc-1, argv+1);
+               if (matches(argv0, c->cmd) == 0) {
+                       return -(c->func(argc-1, argv+1));
+               }
        }
 
        fprintf(stderr, "Object \"%s\" is unknown, try \"ip help\".\n", argv0);
-       return -1;
+       return EXIT_FAILURE;
 }
 
 static int batch(const char *name)
 {
        char *line = NULL;
        size_t len = 0;
-       int ret = 0;
+       int ret = EXIT_SUCCESS;
 
        if (name && strcmp(name, "-") != 0) {
                if (freopen(name, "r", stdin) == NULL) {
                        fprintf(stderr, "Cannot open file \"%s\" for reading: %s\n",
                                name, strerror(errno));
-                       return -1;
+                       return EXIT_FAILURE;
                }
        }
 
        if (rtnl_open(&rth, 0) < 0) {
                fprintf(stderr, "Cannot open rtnetlink\n");
-               return -1;
+               return EXIT_FAILURE;
        }
 
        cmdlineno = 0;
@@ -129,7 +130,7 @@ static int batch(const char *name)
 
                if (do_cmd(largv[0], largc, largv)) {
                        fprintf(stderr, "Command failed %s:%d\n", name, cmdlineno);
-                       ret = 1;
+                       ret = EXIT_FAILURE;
                        if (!force)
                                break;
                }