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
[-- Attachment #1 --]
Here's another one: don't generate a template file if we're not going
to let the user edit it.
DES
--
Dag-Erling Smørgrav - des@des.no
[-- Attachment #2 --]
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>
