]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
mountpoint: refactor exit path
authorDave Reisner <d@falconindy.com>
Mon, 10 Oct 2011 23:14:15 +0000 (19:14 -0400)
committerKarel Zak <kzak@redhat.com>
Tue, 11 Oct 2011 09:03:45 +0000 (11:03 +0200)
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@archlinux.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/mountpoint.c

index 1182f7c3bda108211ca3c436790a31b2bcd253d7..16c7c2271db9c2663f0002c2cc5d728a8b839796 100644 (file)
@@ -116,7 +116,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;
 
@@ -162,30 +162,36 @@ 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);
-       else {
+
+       if (dev_devno) {
+               if (print_devno(spec, &st) == 0)
+                       rc = EXIT_SUCCESS;
+       } else {
                dev_t src;
 
                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) {
                        if (!quiet)
                                printf(_("%s is not a mountpoint\n"), spec);
-                       return EXIT_FAILURE;
+                       goto finish;
                }
+
+               rc = EXIT_SUCCESS;
+
                if (fs_devno)
                        printf("%u:%u\n", major(src), minor(src));
                else if (!quiet)
                        printf(_("%s is a mountpoint\n"), spec);
        }
 
-       return rc ? EXIT_FAILURE : EXIT_SUCCESS;
+finish:
+       return rc;
 }