socsvn commit: r323791 - soc2017/kneitinger/libbe-head/usr.bin/be

kneitinger at FreeBSD.org kneitinger at FreeBSD.org
Wed Jun 21 09:10:56 UTC 2017


Author: kneitinger
Date: Wed Jun 21 09:10:55 2017
New Revision: 323791
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323791

Log:
  Refactor be usage func to return value indicating if explicitly called or not
  

Modified:
  soc2017/kneitinger/libbe-head/usr.bin/be/be.c

Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c
==============================================================================
--- soc2017/kneitinger/libbe-head/usr.bin/be/be.c	Wed Jun 21 08:12:07 2017	(r323790)
+++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c	Wed Jun 21 09:10:55 2017	(r323791)
@@ -33,120 +33,122 @@
 #include <sysexits.h>
 #include <unistd.h>
 
-static int be_activate( int argc, char *argv[]);
-static int be_create( int argc, char *argv[]);
-static int be_destroy( int argc, char *argv[]);
-static int be_jail( int argc, char *argv[]);
-static int be_list( int argc, char *argv[]);
-static int be_mount( int argc, char *argv[]);
-static int be_rename( int argc, char *argv[]);
-static int be_unjail( int argc, char *argv[]);
-static int be_unmount( int argc, char *argv[]);
+static int be_activate(int argc, char *argv[]);
+static int be_create(int argc, char *argv[]);
+static int be_destroy(int argc, char *argv[]);
+static int be_jail(int argc, char *argv[]);
+static int be_list(int argc, char *argv[]);
+static int be_mount(int argc, char *argv[]);
+static int be_rename(int argc, char *argv[]);
+static int be_unjail(int argc, char *argv[]);
+static int be_unmount(int argc, char *argv[]);
 
 
-static void
+static int
 usage(bool explicit)
 {
 	FILE *fp = explicit ? stdout : stderr;
 
 	fprintf(fp, "%s\n\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
-	"usage: be ( -h | -? | subcommand [args...] )",
-	"       be activate [-t] beName",
-	"       be create [-r] [-e nonActiveBe | -e beName at snapshot] beName",
-	"       be create [-r] beName at snapshot",
-	"       be destroy [-F] ⟨beName | beName at snapshot⟩",
-	"       be jail ⟨jailID | jailName⟩ bootenv",
-	"       be list [-a] [-D] [-H] [-s]",
-	"       be mount beName [mountpoint]",
-	"       be rename origBeName newBeName",
-	"       be { ujail | unjail } ⟨jailID | jailName⟩ bootenv",
-	"       be { umount | unmount } [-f] beName");
+	    "usage: be ( -h | -? | subcommand [args...] )",
+	    "       be activate [-t] beName",
+	    "       be create [-r] [-e nonActiveBe | -e beName at snapshot] beName",
+	    "       be create [-r] beName at snapshot",
+	    "       be destroy [-F] ⟨beName | beName at snapshot⟩",
+	    "       be jail ⟨jailID | jailName⟩ bootenv",
+	    "       be list [-a] [-D] [-H] [-s]",
+	    "       be mount beName [mountpoint]",
+	    "       be rename origBeName newBeName",
+	    "       be { ujail | unjail } ⟨jailID | jailName⟩ bootenv",
+	    "       be { umount | unmount } [-f] beName");
 
-	return;
+	return (explicit ? 0 : EX_USAGE);
 }
 
+
 /*
  * Represents a relationship between the command name and the parser action
  * that handles it.
  */
 struct command_map_entry {
-	const char	*command;
-	int		(*fn)(int argc, char *argv[]);
+	const char *command;
+	int (*fn)(int argc, char *argv[]);
 };
 
-static struct command_map_entry command_map[] = {
-	{ "activate",	be_activate	},
-	{ "create",	be_create	},
-	{ "destroy",	be_destroy	},
-	{ "jail",	be_jail		},
-	{ "list",	be_list		},
-	{ "mount",	be_mount	},
-	{ "rename",	be_rename	},
-	{ "unjail",	be_unjail	},
-	{ "unmount",	be_unmount	},
+static struct command_map_entry command_map[] =
+{
+	{ "activate", be_activate },
+	{ "create",   be_create	  },
+	{ "destroy",  be_destroy  },
+	{ "jail",     be_jail	  },
+	{ "list",     be_list	  },
+	{ "mount",    be_mount	  },
+	{ "rename",   be_rename	  },
+	{ "unjail",   be_unjail	  },
+	{ "unmount",  be_unmount  },
 };
 
 static int
 get_cmd_index(char *cmd, int *index)
 {
-	int map_size = sizeof(command_map) / sizeof (struct command_map_entry);
+	int map_size = sizeof(command_map) / sizeof(struct command_map_entry);
 
-	for (int i=0; i < map_size; ++i) {
+	for (int i = 0; i < map_size; ++i) {
 		if (strcmp(cmd, command_map[i].command) == 0) {
 			*index = i;
-			return 0;
+			return (0);
 		}
 	}
 
-	return 1;
+	return (1);
 }
 
 
 static int
-be_activate( int argc, char *argv[])
+be_activate(int argc, char *argv[])
 {
 	int opt;
 	bool temp;
 	char *bootenv;
 
 	temp = false;
-	while((opt = getopt(argc, argv, "t")) != -1) {
-		switch(opt) {
+	while ((opt = getopt(argc, argv, "t")) != -1) {
+		switch (opt) {
 		case 't':
 			temp = true;
 			break;
 		default:
 			fprintf(stderr, "be activate: unknown option '-%c'\n",
 			    optopt);
-			usage(false);
-			return(EX_USAGE);
+			return (usage(false));
 		}
 	}
 
 	argc -= optind;
 	argv += optind;
 
-	if(argc != 1) {
+	if (argc != 1) {
 		fprintf(stderr, "be activate: wrong number of arguments\n");
-		usage(false);
-		return(EX_USAGE);
+		return (usage(false));
 	}
 
 	bootenv = argv[0];
 
 	/* activate logic goes here */
 
-	return 0;
+	return (0);
 }
 
+
 static int
-be_create( int argc, char *argv[])
+be_create(int argc, char *argv[])
 {
-	return(EX_USAGE);
+	return (EX_USAGE);
 }
 
+
 static int
-be_destroy( int argc, char *argv[])
+be_destroy(int argc, char *argv[])
 {
 	int opt;
 	bool force;
@@ -154,40 +156,37 @@
 	char *snapshot;
 
 	force = false;
-	while((opt = getopt(argc, argv, "F")) != -1) {
-		switch(opt) {
+	while ((opt = getopt(argc, argv, "F")) != -1) {
+		switch (opt) {
 		case 'F':
 			force = true;
 			break;
 		default:
 			fprintf(stderr, "be destroy: unknown option '-%c'\n",
 			    optopt);
-			usage(false);
-			return(EX_USAGE);
+			return (usage(false));
 		}
 	}
 
 	argc -= optind;
 	argv += optind;
 
-	if(argc != 1) {
+	if (argc != 1) {
 		fprintf(stderr, "be destroy: wrong number of arguments\n");
-		usage(false);
-		return(EX_USAGE);
+		return (usage(false));
 	}
 
 	/* Determine bootenv name, and snapshot if provided */
 	char *buffer = malloc((strlen(argv[0])+1) * sizeof(char));
-	strcpy(buffer,argv[0]);
+	strcpy(buffer, argv[0]);
 	char *delimiter;
-	if( (delimiter = strchr(buffer, '@')) != NULL) {
+	if ((delimiter = strchr(buffer, '@')) != NULL) {
 		*delimiter = '\0';
- 		snapshot = delimiter + sizeof(char);
-		if(strchr(snapshot, '@') != NULL) {
+		snapshot = delimiter + sizeof(char);
+		if (strchr(snapshot, '@') != NULL) {
 			fprintf(stderr, "be destroy: invalid snapshot name\n");
-			usage(false);
 			free(buffer);
-			return(EX_USAGE);
+			return (usage(false));
 		}
 	}
 	bootenv = buffer;
@@ -195,25 +194,27 @@
 	/* destroy logic goes here */
 
 	free(buffer);
-	return 0;
+	return (0);
 }
 
+
 static int
-be_jail( int argc, char *argv[])
+be_jail(int argc, char *argv[])
 {
-	return(EX_USAGE);
+	return (EX_USAGE);
 }
 
+
 static int
-be_list( int argc, char *argv[])
+be_list(int argc, char *argv[])
 {
 	int opt;
 	bool show_all_datasets, show_space, hide_headers, show_snaps;
 	char *bootenv;
 
 	show_all_datasets = show_space = hide_headers = show_snaps = false;
-	while((opt = getopt(argc, argv, "aDHs")) != -1) {
-		switch(opt) {
+	while ((opt = getopt(argc, argv, "aDHs")) != -1) {
+		switch (opt) {
 		case 'a':
 			show_all_datasets = true;
 			break;
@@ -229,96 +230,98 @@
 		default:
 			fprintf(stderr, "be list: unknown option '-%c'\n",
 			    optopt);
-			usage(false);
-			return(EX_USAGE);
+			return (usage(false));
 		}
 	}
 
 	argc -= optind;
 
-	if(argc != 0) {
+	if (argc != 0) {
 		fprintf(stderr, "be list: extra argument provided\n");
-		usage(false);
-		return(EX_USAGE);
+		return (usage(false));
 	}
 
 	/* list logic goes here */
 
-	return 0;
+	return (0);
 }
 
+
 static int
-be_mount( int argc, char *argv[])
+be_mount(int argc, char *argv[])
 {
-	return(EX_USAGE);
+	return (EX_USAGE);
 }
 
+
 static int
-be_rename( int argc, char *argv[])
+be_rename(int argc, char *argv[])
 {
 	char *src;
 	char *dest;
 
-	if ( argc < 3) {
+	if (argc < 3) {
 		fprintf(stderr, "be rename: missing argument\n");
-		usage(false);
-		return(EX_USAGE);
+		return (usage(false));
 	}
 
-	if ( argc > 3) {
+	if (argc > 3) {
 		fprintf(stderr, "be rename: too many arguments\n");
-		usage(false);
-		return(EX_USAGE);
+		return (usage(false));
 	}
 
-	src  = argv[1];
+	src = argv[1];
 	dest = argv[2];
 
-	return 0;
+	return (0);
 }
 
+
 static int
-be_unjail( int argc, char *argv[])
+be_unjail(int argc, char *argv[])
 {
-	return(EX_USAGE);
+	return (EX_USAGE);
 }
 
+
 static int
-be_unmount( int argc, char *argv[])
+be_unmount(int argc, char *argv[])
 {
-	return(EX_USAGE);
+	return (EX_USAGE);
 }
 
+
 int
 main(int argc, char *argv[])
 {
-	char	*command;
-	int	command_index;
+	char *command;
+	int command_index;
 
 	if (argc < 2) {
 		fprintf(stderr, "missing command\n");
-		usage(false);
-		exit(EX_USAGE);
+		exit(usage(false));
 	}
 
 	command = argv[1];
 
 	/* Handle command aliases */
-	if (strcmp(command, "umount") == 0)
+	if (strcmp(command, "umount") == 0) {
 		command = "unmount";
+	}
 
-	if (strcmp(command, "ujail") == 0)
+	if (strcmp(command, "ujail") == 0) {
 		command = "unjail";
+	}
 
-	if (strcmp(command, "-?") == 0 || strcmp(command, "-h") == 0)
-		usage(true);
+	if ((strcmp(command, "-?") == 0) || (strcmp(command, "-h") == 0)) {
+		exit(usage(true));
+	}
 
 	if (get_cmd_index(command, &command_index)) {
 		fprintf(stderr, "unknown command: %s\n", command);
-		usage(false);
-		exit(EX_USAGE);
+		exit(usage(false));
 	}
 
 
-	return command_map[command_index].fn(argc-1,argv+1);
+	return (command_map[command_index].fn(argc-1, argv+1));
 }


More information about the svn-soc-all mailing list