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. Signed-off-by: Dave Reisner <dreisner@xxxxxxxxxxxxx> --- sys-utils/mountpoint.c | 15 +++++++-------- 1 files changed, 7 insertions(+), 8 deletions(-) diff --git a/sys-utils/mountpoint.c b/sys-utils/mountpoint.c index f668368..065d96b 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 = (dev_t)-1; if (!tb) - return NULL; + return (dev_t)-1; 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) @@ -154,16 +154,15 @@ int main(int argc, char **argv) return EXIT_FAILURE; } src = dir_to_device(spec); - if (!src) { + if (src == (dev_t)-1) { if (!quiet) printf(_("%s is not a mountpoint\n"), spec); 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; -- 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