Date: Tue, 20 Jun 2017 09:46:56 GMT From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r323740 - soc2017/kneitinger/libbe-head/usr.bin/be Message-ID: <201706200946.v5K9ku0P051652@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kneitinger Date: Tue Jun 20 09:46:55 2017 New Revision: 323740 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323740 Log: Layout skeleton of be(1) command parser Modified: soc2017/kneitinger/libbe-head/usr.bin/be/Makefile soc2017/kneitinger/libbe-head/usr.bin/be/be.c Modified: soc2017/kneitinger/libbe-head/usr.bin/be/Makefile ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Tue Jun 20 08:44:03 2017 (r323739) +++ soc2017/kneitinger/libbe-head/usr.bin/be/Makefile Tue Jun 20 09:46:55 2017 (r323740) @@ -1,7 +1,13 @@ # @(#)Makefile 8.1 (Berkeley) 6/6/93 -PROG= be +PROG= be +WARNS?= 1 +MAN= be.1 -LIBADD= be +LIBADD= be +LIBADD= zfs +LIBADD= nvpair + +CFLAGS+= -DNEED_SOLARIS_BOOLEAN .include <bsd.prog.mk> Modified: soc2017/kneitinger/libbe-head/usr.bin/be/be.c ============================================================================== --- soc2017/kneitinger/libbe-head/usr.bin/be/be.c Tue Jun 20 08:44:03 2017 (r323739) +++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Tue Jun 20 09:46:55 2017 (r323740) @@ -26,13 +26,141 @@ * SUCH DAMAGE. */ - -#include <be.h> -#include <err.h> +#include <stdbool.h> #include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sysexits.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 void +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"); + + return; +} + +/* + * Represents a relationship between the command name and the parser action + * that handles it. + */ +struct cmd_map_entry { + const char *command; + int (*fn)(int argc, char *argv[]); +}; + +static struct cmd_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 +be_activate( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_create( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_destroy( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_jail( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_list( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_mount( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_rename( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_unjail( int argc, char *argv[]) +{ + return(EX_USAGE); +} + +static int +be_unmount( int argc, char *argv[]) +{ + return(EX_USAGE); +} int -main(int argc, char **argv) +main(int argc, char *argv[]) { + char *command; + + if (argc < 2) { + fprintf(stderr, "missing command\n"); + usage(false); + exit(EX_USAGE); + } + + command = argv[1]; + + /* Handle command aliases */ + if (strcmp(command, "umount") == 0) + command = "unmount"; + + if (strcmp(command, "ujail") == 0) + command = "unjail"; + + if (strcmp(command, "-?") == 0 || strcmp(command, "-h") == 0) + usage(true); return 0; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201706200946.v5K9ku0P051652>