socsvn commit: r323821 - soc2017/kneitinger/libbe-head/usr.bin/be
kneitinger at FreeBSD.org
kneitinger at FreeBSD.org
Thu Jun 22 05:16:02 UTC 2017
Author: kneitinger
Date: Thu Jun 22 05:16:00 2017
New Revision: 323821
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323821
Log:
Add parser for be create and jail commands
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 Thu Jun 22 04:40:11 2017 (r323820)
+++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c Thu Jun 22 05:16:00 2017 (r323821)
@@ -143,7 +143,56 @@
static int
be_create(int argc, char *argv[])
{
- return (EX_USAGE);
+ int opt;
+ bool recursive;
+ char *existing;
+ char *bootenv;
+ char *snapshot;
+
+ existing = NULL;
+ recursive = false;
+ while ((opt = getopt(argc, argv, "re:")) != -1) {
+ switch (opt) {
+ case 'e':
+ existing = optarg;
+ break;
+ case 'r':
+ recursive = true;
+ break;
+ default:
+ fprintf(stderr, "be create: unknown option '-%c'\n",
+ optopt);
+ return (usage(false));
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (argc != 1) {
+ fprintf(stderr, "be create: wrong number of arguments\n");
+ return (usage(false));
+ }
+
+ /* Determine bootenv name, and snapshot if provided */
+ char *buffer = malloc((strlen(argv[0])+1) * sizeof(char));
+ strcpy(buffer, argv[0]);
+ char *delimiter;
+ if ((delimiter = strchr(buffer, '@')) != NULL) {
+ *delimiter = '\0';
+ snapshot = delimiter + sizeof(char);
+ if (strchr(snapshot, '@') != NULL) {
+ fprintf(stderr, "be destroy: invalid snapshot name\n");
+ free(buffer);
+ return (usage(false));
+ }
+ }
+ bootenv = buffer;
+
+ /* create logic goes here */
+
+ free(buffer);
+ return (0);
}
@@ -201,7 +250,21 @@
static int
be_jail(int argc, char *argv[])
{
- return (EX_USAGE);
+ char *bootenv, *jail;
+
+ if (argc < 3) {
+ fprintf(stderr, "be jail: not enough arguments\n");
+ return (usage(false));
+ }
+ if (argc > 3) {
+ fprintf(stderr, "be jail: too many arguments\n");
+ return (usage(false));
+ }
+
+ jail = argv[1];
+ bootenv = argv[2];
+
+ return (0);
}
@@ -322,6 +385,5 @@
exit(usage(false));
}
-
return (command_map[command_index].fn(argc-1, argv+1));
}
More information about the svn-soc-all
mailing list