btrfs-progs: get_label_mounted to return label instead of print
authorAnand Jain <anand.jain@oracle.com>
Mon, 15 Jul 2013 05:30:54 +0000 (13:30 +0800)
committerDavid Sterba <dsterba@suse.cz>
Fri, 9 Aug 2013 12:32:37 +0000 (14:32 +0200)
This would help to reuse the function

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
utils.c
utils.h

diff --git a/utils.c b/utils.c
index 29252df..46f502d 100644 (file)
--- a/utils.c
+++ b/utils.c
@@ -1330,7 +1330,7 @@ static int get_label_unmounted(const char *dev)
  * mounted path rather than device.  Return the corresponding error
  * the user specified the device path.
  */
-static int get_label_mounted(const char *mount_path)
+int get_label_mounted(const char *mount_path, char *labelp)
 {
        char label[BTRFS_LABEL_SIZE];
        int fd;
@@ -1348,16 +1348,24 @@ static int get_label_mounted(const char *mount_path)
                return -1;
        }
 
-       fprintf(stdout, "%s\n", label);
+       strncpy(labelp, label, sizeof(label));
        close(fd);
        return 0;
 }
 
 int get_label(const char *btrfs_dev)
 {
-       return is_existing_blk_or_reg_file(btrfs_dev) ?
-               get_label_unmounted(btrfs_dev) :
-               get_label_mounted(btrfs_dev);
+       int ret;
+       char label[BTRFS_LABEL_SIZE];
+
+       if (is_existing_blk_or_reg_file(btrfs_dev))
+               ret = get_label_unmounted(btrfs_dev);
+       else {
+               ret = get_label_mounted(btrfs_dev, label);
+               if (!ret)
+                       fprintf(stdout, "%s\n", label);
+       }
+       return ret;
 }
 
 int set_label(const char *btrfs_dev, const char *label)
diff --git a/utils.h b/utils.h
index 79390cf..13c9544 100644 (file)
--- a/utils.h
+++ b/utils.h
@@ -78,4 +78,5 @@ u64 btrfs_device_size(int fd, struct stat *st);
 #define strncpy_null(dest, src) __strncpy__null(dest, src, sizeof(dest))
 int test_dev_for_mkfs(char *file, int force_overwrite, char *estr);
 int scan_for_btrfs(int where, int update_kernel);
+int get_label_mounted(const char *mount_path, char *labelp);
 #endif