diff --git a/ip/ip.c b/ip/ip.c index 7f0c4688..4e609af9 100644 --- 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; }