Date: Wed, 21 Jun 2017 09:10:55 GMT From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323791 - soc2017/kneitinger/libbe-head/usr.bin/be Message-ID: <201706210910.v5L9AteP001270@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@snapshot] beName", - " be create [-r] beName@snapshot", - " be destroy [-F] ⟨beName | beName@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@snapshot] beName", + " be create [-r] beName@snapshot", + " be destroy [-F] ⟨beName | beName@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)); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201706210910.v5L9AteP001270>