socsvn commit: r326786 - soc2017/kneitinger/libbe-head/sbin/be

kneitinger at FreeBSD.org kneitinger at FreeBSD.org
Mon Sep 4 14:09:53 UTC 2017


Author: kneitinger
Date: Mon Sep  4 14:09:51 2017
New Revision: 326786
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=326786

Log:
  Add in call to be_snapshot() when `be create` is called with one
  argument containing an "@"
  

Modified:
  soc2017/kneitinger/libbe-head/sbin/be/be.c

Modified: soc2017/kneitinger/libbe-head/sbin/be/be.c
==============================================================================
--- soc2017/kneitinger/libbe-head/sbin/be/be.c	Mon Sep  4 13:29:42 2017	(r326785)
+++ soc2017/kneitinger/libbe-head/sbin/be/be.c	Mon Sep  4 14:09:51 2017	(r326786)
@@ -90,18 +90,18 @@
 
 static struct command_map_entry command_map[] =
 {
-	{ "activate", be_cmd_activate	  },
-	{ "create",   be_cmd_create	  },
-	{ "destroy",  be_cmd_destroy	  },
-	{ "export",   be_cmd_export	  },
-	{ "import",   be_cmd_import	  },
-	{ "init",     be_cmd_init	  },
-	{ "jail",     be_cmd_jail	  },
-	{ "list",     be_cmd_list	  },
-	{ "mount",    be_cmd_mount	  },
-	{ "rename",   be_cmd_rename	  },
-	{ "unjail",   be_cmd_unjail	  },
-	{ "unmount",  be_cmd_unmount	  },
+	{ "activate", be_cmd_activate },
+	{ "create",   be_cmd_create   },
+	{ "destroy",  be_cmd_destroy  },
+	{ "export",   be_cmd_export   },
+	{ "import",   be_cmd_import   },
+	{ "init",     be_cmd_init     },
+	{ "jail",     be_cmd_jail     },
+	{ "list",     be_cmd_list     },
+	{ "mount",    be_cmd_mount    },
+	{ "rename",   be_cmd_rename   },
+	{ "unjail",   be_cmd_unjail   },
+	{ "unmount",  be_cmd_unmount  },
 };
 
 static int
@@ -172,12 +172,10 @@
 be_cmd_create(int argc, char *argv[])
 {
 	int err, opt;
-	bool recursive;
 	char *existing;
 	char *bootenv;
 
 	existing = NULL;
-	recursive = false;
 	while ((opt = getopt(argc, argv, "e:")) != -1) {
 		switch (opt) {
 		case 'e':
@@ -209,7 +207,18 @@
 			err = be_create_from_existing(be, bootenv, existing);
 		}
 	} else {
-		err = be_create(be, bootenv);
+		/* char *existing, is unused in this case, so it can be
+		 * safely repurposed as snap name */
+		if ((existing = strchr(bootenv, '@')) != NULL) {
+			*(existing++) = '\0';
+			if ((err = be_snapshot(be, bootenv, existing, NULL))
+			    != BE_ERR_SUCCESS) {
+				fprintf(stderr, "failed to create snapshot\n");
+			}
+			return (err);
+		} else {
+			err = be_create(be, bootenv);
+		}
 	}
 
 	switch (err) {


More information about the svn-soc-all mailing list