There's only one condition for which we declare success, but many for failure. Initialize rc as failure and set to success on this single condition. In all cases, jump to a label to exit instead of exiting immediately. This will be used later on to ease cleanup of any heap allocations. Signed-off-by: Dave Reisner <dreisner@xxxxxxxxxxxxx> --- v2: use warn{,x} instead of err{,x} to avoid leaks. sys-utils/mountpoint.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) diff --git a/sys-utils/mountpoint.c b/sys-utils/mountpoint.c index 1297d82..e075b83 100644 --- a/sys-utils/mountpoint.c +++ b/sys-utils/mountpoint.c @@ -105,7 +105,7 @@ static void __attribute__((__noreturn__)) usage(FILE *out) int main(int argc, char **argv) { - int c, fs_devno = 0, dev_devno = 0, rc = 0; + int c, fs_devno = 0, dev_devno = 0, rc = EXIT_FAILURE; char *spec; struct stat st; @@ -151,8 +151,8 @@ int main(int argc, char **argv) if (stat(spec, &st)) { if (!quiet) - err(EXIT_FAILURE, "%s", spec); - return EXIT_FAILURE; + warn("%s", spec); + goto finish; } if (dev_devno) rc = print_devno(spec, &st); @@ -161,20 +161,23 @@ int main(int argc, char **argv) if (!S_ISDIR(st.st_mode)) { if (!quiet) - errx(EXIT_FAILURE, _("%s: not a directory"), spec); - return EXIT_FAILURE; + warnx(_("%s: not a directory"), spec); + goto finish; } src = dir_to_device(spec); if (src == (dev_t)-1) { if (!quiet) printf(_("%s is not a mountpoint\n"), spec); - return EXIT_FAILURE; + goto finish; } if (fs_devno) printf("%u:%u\n", major(src), minor(src)); - else if (!quiet) + else if (!quiet) { printf(_("%s is a mountpoint\n"), spec); + rc = EXIT_SUCCESS; + } } - return rc ? EXIT_FAILURE : EXIT_SUCCESS; +finish: + return rc; } -- 1.7.7 -- To unsubscribe from this list: send the line "unsubscribe util-linux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html