[PATCH][BTRFS-PROGS][CLEANUP] Remove gotos

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Change a spagetti-style code (there are some "interlaced" gotos) to
a more modern style...

This patch removes also some #define from utils.h, which define
constants used only in cmds-filesystems.c . Instead an enum
is used locally in cmds-filesystems.c .
---
 cmds-filesystem.c | 106 ++++++++++++++++++++++++++++--------------------------
 utils.h           |   3 --
 2 files changed, 55 insertions(+), 54 deletions(-)

diff --git a/cmds-filesystem.c b/cmds-filesystem.c
index 7eaccb9..08ddb5d 100644
--- a/cmds-filesystem.c
+++ b/cmds-filesystem.c
@@ -40,6 +40,11 @@
 #include "list_sort.h"
 #include "disk-io.h"
 
+enum filesystem_show_scan_method {
+	BTRFS_SCAN_ANY,
+	BTRFS_SCAN_MOUNTED,
+	BTRFS_SCAN_LBLKID
+};
 
 /*
  * for btrfs fi show, we maintain a hash of fsids we've already printed.
@@ -853,7 +858,7 @@ static int cmd_show(int argc, char **argv)
 	char *search = NULL;
 	int ret;
 	/* default, search both kernel and udev */
-	int where = -1;
+	int where = BTRFS_SCAN_ANY;
 	int type = 0;
 	char mp[BTRFS_PATH_NAME_MAX + 1];
 	char path[PATH_MAX];
@@ -930,61 +935,60 @@ static int cmd_show(int argc, char **argv)
 				uuid_unparse(fsid, uuid_buf);
 				search = uuid_buf;
 				type = BTRFS_ARG_UUID;
-				goto devs_only;
+				where = BTRFS_SCAN_LBLKID;
 			}
 		}
 	}
 
-	if (where == BTRFS_SCAN_LBLKID)
-		goto devs_only;
-
-	/* show mounted btrfs */
-	ret = btrfs_scan_kernel(search);
-	if (search && !ret) {
-		/* since search is found we are done */
-		goto out;
-	}
-
-	/* shows mounted only */
-	if (where == BTRFS_SCAN_MOUNTED)
-		goto out;
-
-devs_only:
-	ret = btrfs_scan_lblkid();
-
-	if (ret) {
-		fprintf(stderr, "ERROR: %d while scanning\n", ret);
-		return 1;
-	}
-
-	found = search_umounted_fs_uuids(&all_uuids, search);
-	if (found < 0) {
-		fprintf(stderr,
-			"ERROR: %d while searching target device\n", ret);
-		return 1;
-	}
-
-	/*
-	 * The seed/sprout mapping are not detected yet,
-	 * do mapping build for all umounted fs
-	 */
-	ret = map_seed_devices(&all_uuids);
-	if (ret) {
-		fprintf(stderr,
-			"ERROR: %d while mapping seed devices\n", ret);
-		return 1;
+	if (where == BTRFS_SCAN_MOUNTED || where == BTRFS_SCAN_ANY) {
+	
+		/* show mounted btrfs */
+		ret = btrfs_scan_kernel(search);
+		if (search && !ret) {
+			/* since search is found we are done */
+			goto out;
+		}
+	
 	}
-
-	list_for_each_entry(fs_devices, &all_uuids, list)
-		print_one_uuid(fs_devices);
-
-	if (search && !found)
-		ret = 1;
-
-	while (!list_empty(&all_uuids)) {
-		fs_devices = list_entry(all_uuids.next,
-					struct btrfs_fs_devices, list);
-		free_fs_devices(fs_devices);
+	
+	if (where == BTRFS_SCAN_LBLKID || where == BTRFS_SCAN_ANY) {
+		
+		ret = btrfs_scan_lblkid();
+	
+		if (ret) {
+			fprintf(stderr, "ERROR: %d while scanning\n", ret);
+			return 1;
+		}
+	
+		found = search_umounted_fs_uuids(&all_uuids, search);
+		if (found < 0) {
+			fprintf(stderr,
+				"ERROR: %d while searching target device\n", ret);
+			return 1;
+		}
+	
+		/*
+		 * The seed/sprout mapping are not detected yet,
+		 * do mapping build for all umounted fs
+		 */
+		ret = map_seed_devices(&all_uuids);
+		if (ret) {
+			fprintf(stderr,
+				"ERROR: %d while mapping seed devices\n", ret);
+			return 1;
+		}
+	
+		list_for_each_entry(fs_devices, &all_uuids, list)
+			print_one_uuid(fs_devices);
+	
+		if (search && !found)
+			ret = 1;
+	
+		while (!list_empty(&all_uuids)) {
+			fs_devices = list_entry(all_uuids.next,
+						struct btrfs_fs_devices, list);
+			free_fs_devices(fs_devices);
+		}
 	}
 out:
 	printf("%s\n", BTRFS_BUILD_VERSION);
diff --git a/utils.h b/utils.h
index 0464c2d..603cdfb 100644
--- a/utils.h
+++ b/utils.h
@@ -26,9 +26,6 @@
 #define BTRFS_MKFS_SYSTEM_GROUP_SIZE (4 * 1024 * 1024)
 #define BTRFS_MKFS_SMALL_VOLUME_SIZE (1024 * 1024 * 1024)
 
-#define BTRFS_SCAN_MOUNTED	(1ULL << 0)
-#define BTRFS_SCAN_LBLKID	(1ULL << 1)
-
 #define BTRFS_UPDATE_KERNEL	1
 
 #define BTRFS_ARG_UNKNOWN	0
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux