On Mon, Dec 02, 2002 at 01:37:52PM +0100, Thomas Quinot wrote: > Le 2002-12-02, Peter Pentchev ?crivait : > > > > Attached are two patches: a trivial one which just fixes up two problems > > > in diskpart's argument parsing, and a more complex one, which does it > > > "the right way" IMHO, using getopt(3). > > The getopt-based version sounds better to me. > > > + case 'd': > > + dflag++; > > + if (pflag) > > + usage(); > > + break; > > + > > + case 'p': > > + if (dflag) > > + usage(); > > + pflag++; > > + break; > > I'd remove both tests and replace them with a single > if (pflag && dflag) usage() > after all arguments have been processed.
Ahhh; of course this would be better. Updated patch attached. G'luck, Peter -- Peter Pentchev [EMAIL PROTECTED] [EMAIL PROTECTED] PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 If there were no counterfactuals, this sentence would not have been paradoxical.
Index: src/usr.sbin/diskpart/diskpart.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/diskpart/Attic/diskpart.c,v
retrieving revision 1.11.2.1
diff -u -r1.11.2.1 diskpart.c
--- src/usr.sbin/diskpart/diskpart.c 7 Jan 2002 06:00:23 -0000 1.11.2.1
+++ src/usr.sbin/diskpart/diskpart.c 2 Dec 2002 12:45:27 -0000
@@ -55,6 +55,7 @@
#include <ctype.h>
#include <err.h>
#include <stdio.h>
+#include <unistd.h>
#define for_now /* show all of `c' partition for disklabel */
#define NPARTITIONS 8
@@ -126,22 +127,29 @@
int threshhold, numcyls[NPARTITIONS], startcyl[NPARTITIONS];
int totsize = 0;
char *lp, *tyname;
+ int ch;
- argc--, argv++;
+ while ((ch = getopt(argc, argv, "dps:")) != EOF)
+ switch (ch) {
+ case 'd':
+ dflag++;
+ break;
+
+ case 'p':
+ pflag++;
+ break;
+
+ case 's':
+ totsize = atoi(optarg);
+ break;
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (dflag && pflag)
+ usage();
if (argc < 1)
usage();
- if (argc > 0 && strcmp(*argv, "-p") == 0) {
- pflag++;
- argc--, argv++;
- }
- if (argc > 0 && strcmp(*argv, "-d") == 0) {
- dflag++;
- argc--, argv++;
- }
- if (argc > 1 && strcmp(*argv, "-s") == 0) {
- totsize = atoi(argv[1]);
- argc += 2, argv += 2;
- }
dp = getdiskbyname(*argv);
if (dp == NULL) {
if (isatty(0))
msg38429/pgp00000.pgp
Description: PGP signature

