Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 05 Feb 2004 01:37:49 +0100
From:      des@des.no (Dag-Erling =?iso-8859-1?q?Sm=F8rgrav?=)
To:        "Poul-Henning Kamp" <phk@phk.freebsd.dk>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/etc/rc.d gbde_swap
Message-ID:  <xzpektamkde.fsf@dwp.des.no>
In-Reply-To: <35302.1075933799@critter.freebsd.dk> (Poul-Henning Kamp's message of "Wed, 04 Feb 2004 23:29:59 %2B0100")
References:  <35302.1075933799@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

Here's another one: don't generate a template file if we're not going
to let the user edit it.

DES
--=20
Dag-Erling Sm=F8rgrav - des@des.no


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=gbde.diff

Index: gbde.c
===================================================================
RCS file: /home/ncvs/src/sbin/gbde/gbde.c,v
retrieving revision 1.20
diff -u -r1.20 gbde.c
--- gbde.c	3 Feb 2004 11:12:29 -0000	1.20
+++ gbde.c	5 Feb 2004 00:35:21 -0000
@@ -505,29 +505,37 @@
 			err(1, "%s", f_opt);
 		params = properties_read(i);
 		close (i);
-	} else {
+	} else if (i_opt) {
 		/* XXX: Polish */
-		q = strdup("/tmp/temp.XXXXXXXXXX");
+		asprintf(&q, "%stemp.XXXXXXXXXX", _PATH_TMP);
+		if (q == NULL)
+			err(1, "asprintf");
 		i = mkstemp(q);
 		if (i < 0)
 			err(1, "%s", q);
 		write(i, template, strlen(template));
 		close (i);
-		if (i_opt) {
-			p = getenv("EDITOR");
-			if (p == NULL)
-				p = "vi";
-			if (snprintf(cbuf, sizeof(cbuf), "%s %s\n", p, q) >=
-			    (ssize_t)sizeof(cbuf))
-				errx(1, "EDITOR is too long");
-			system(cbuf);
-		}
+		p = getenv("EDITOR");
+		if (p == NULL)
+			p = "vi";
+		if (snprintf(cbuf, sizeof(cbuf), "%s %s\n", p, q) >=
+		    (ssize_t)sizeof(cbuf))
+			errx(1, "EDITOR is too long");
+		system(cbuf);
 		i = open(q, O_RDONLY);
 		if (i < 0)
 			err(1, "%s", f_opt);
 		params = properties_read(i);
 		close (i);
 		unlink(q);
+		free(q);
+	} else {
+		/* XXX: Hack */
+		i = open(_PATH_DEVNULL, O_RDONLY);
+		if (i < 0)
+			err(1, "%s", _PATH_DEVNULL);
+		params = properties_read(i);
+		close (i);
 	}
 
 	/* <sector_size> */
@@ -615,13 +623,15 @@
 
 	/* <number_of_keys> */
 	p = property_find(params, "number_of_keys");
-	if (p == NULL)
-		errx(1, "Missing number_of_keys property");
-	nkeys = strtoul(p, &q, 0);
-	if (!*p || *q)
-		errx(1, "number_of_keys not a proper number");
-	if (nkeys < 1 || nkeys > G_BDE_MAXKEYS)
-		errx(1, "number_of_keys out of range");
+	if (p != NULL) {
+		nkeys = strtoul(p, &q, 0);
+		if (!*p || *q)
+			errx(1, "number_of_keys not a proper number");
+		if (nkeys < 1 || nkeys > G_BDE_MAXKEYS)
+			errx(1, "number_of_keys out of range");
+	} else {
+		nkeys = 4;
+	}
 	for (u = 0; u < nkeys; u++) {
 		for(;;) {
 			do {

--=-=-=--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzpektamkde.fsf>