socsvn commit: r323740 - soc2017/kneitinger/libbe-head/usr.bin/be
kneitinger at FreeBSD.org
kneitinger at FreeBSD.org
Tue Jun 20 09:46:57 UTC 2017
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 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;
+}
+
+/*
+ * 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;
}
More information about the svn-soc-all
mailing list