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