]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
mountpoint: return dev_t from dir_to_device
authorDave Reisner <d@falconindy.com>
Sun, 9 Oct 2011 03:31:50 +0000 (23:31 -0400)
committerKarel Zak <kzak@redhat.com>
Tue, 11 Oct 2011 07:56:07 +0000 (09:56 +0200)
The string returned from this function was never of much use other than
to stat the path when the user requested a major:minor pair beyond the
true/false exit. Save some processing and directly returning the dev_t
on success, and an impossible value on failure.

[kzak@redhat.com: - use 0 as dir_to_device() return value on failure]

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/mountpoint.c

index f66836885abd6ecefc2c2323dd63641ae7d27834..273fea712ee47fbc2d72974641f2286b33379844 100644 (file)
 
 static int quiet;
 
-static char *dir_to_device(const char *spec)
+static dev_t dir_to_device(const char *spec)
 {
        struct libmnt_table *tb = mnt_new_table_from_file("/proc/self/mountinfo");
        struct libmnt_fs *fs;
-       char *res = NULL;
+       dev_t res = 0;
 
        if (!tb)
-               return NULL;
+               return 0;
 
        fs = mnt_table_find_target(tb, spec, MNT_ITER_BACKWARD);
        if (fs && mnt_fs_get_target(fs))
-               res = xstrdup(mnt_fs_get_source(fs));
+               res = mnt_fs_get_devno(fs);
 
        mnt_free_table(tb);
        return res;
@@ -146,7 +146,7 @@ int main(int argc, char **argv)
        if (dev_devno)
                rc = print_devno(spec, &st);
        else {
-               char *src;
+               dev_t src;
 
                if (!S_ISDIR(st.st_mode)) {
                        if (!quiet)
@@ -160,10 +160,9 @@ int main(int argc, char **argv)
                        return EXIT_FAILURE;
                }
                if (fs_devno)
-                       rc = print_devno(src, NULL);
+                       printf("%u:%u\n", major(src), minor(src));
                else if (!quiet)
                        printf(_("%s is a mountpoint\n"), spec);
-               free(src);
        }
 
        return rc ? EXIT_FAILURE : EXIT_SUCCESS;