From owner-svn-soc-all@freebsd.org Mon Sep 4 14:09:52 2017 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E0B3DE09748 for ; Mon, 4 Sep 2017 14:09:52 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D2BD074FFF for ; Mon, 4 Sep 2017 14:09:52 +0000 (UTC) (envelope-from kneitinger@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id v84E9qls081855 for ; Mon, 4 Sep 2017 14:09:52 GMT (envelope-from kneitinger@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id v84E9qJp081852 for svn-soc-all@FreeBSD.org; Mon, 4 Sep 2017 14:09:52 GMT (envelope-from kneitinger@FreeBSD.org) Date: Mon, 4 Sep 2017 14:09:52 GMT Message-Id: <201709041409.v84E9qJp081852@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to kneitinger@FreeBSD.org using -f From: kneitinger@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r326786 - soc2017/kneitinger/libbe-head/sbin/be MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Sep 2017 14:09:53 -0000 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) {