socsvn commit: r323786 - soc2017/kneitinger/libbe-head/usr.bin/be

kneitinger at FreeBSD.org kneitinger at FreeBSD.org
Wed Jun 21 08:27:35 UTC 2017


Author: kneitinger
Date: Wed Jun 21 08:27:33 2017
New Revision: 323786
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=323786

Log:
  Add parser for be destroy command
  

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	Wed Jun 21 07:14:10 2017	(r323785)
+++ soc2017/kneitinger/libbe-head/usr.bin/be/be.c	Wed Jun 21 08:27:33 2017	(r323786)
@@ -147,7 +147,54 @@
 static int
 be_destroy( int argc, char *argv[])
 {
-	return(EX_USAGE);
+	int opt;
+	bool force;
+	char *bootenv;
+	char *snapshot;
+
+	force = false;
+	while((opt = getopt(argc, argv, "F")) != -1) {
+		switch(opt) {
+		case 'F':
+			force = true;
+			break;
+		default:
+			fprintf(stderr, "be destroy: unknown option '-%c'\n",
+			    optopt);
+			usage(false);
+			return(EX_USAGE);
+		}
+	}
+
+	argc -= optind;
+	argv += optind;
+
+	if(argc != 1) {
+		fprintf(stderr, "be destroy: wrong number of arguments\n");
+		usage(false);
+		return(EX_USAGE);
+	}
+
+	/* 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");
+			usage(false);
+			free(buffer);
+			return(EX_USAGE);
+		}
+	}
+	bootenv = buffer;
+
+	/* destroy logic goes here */
+
+	free(buffer);
+	return 0;
 }
 
 static int


More information about the svn-soc-all mailing list