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>