From: Dave Reisner Date: Sun, 9 Oct 2011 03:31:50 +0000 (-0400) Subject: mountpoint: return dev_t from dir_to_device X-Git-Tag: v2.21-rc1~348 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7982e85a61889a739c6b3116293e89ba767955dd;p=thirdparty%2Futil-linux.git mountpoint: return dev_t from dir_to_device 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 Signed-off-by: Karel Zak --- diff --git a/sys-utils/mountpoint.c b/sys-utils/mountpoint.c index f66836885a..273fea712e 100644 --- a/sys-utils/mountpoint.c +++ b/sys-utils/mountpoint.c @@ -40,18 +40,18 @@ 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;