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