[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [lvm-devel] [PATCH 6/6] Exit status 0 for 'dmsetup -c -o help'



Dne 7.7.2010 20:16, Alasdair G Kergon napsal(a):
On Wed, Jul 07, 2010 at 02:29:36PM +0200, Zdenek Kabelac wrote:
diff --git a/tools/dmsetup.c b/tools/dmsetup.c
index 5e71542..479cbb0 100644
--- a/tools/dmsetup.c
+++ b/tools/dmsetup.c
@@ -3340,6 +3340,7 @@ int main(int argc, char **argv)
  	}

  	if (argc == 0) {
+		r = 0;
  		_usage(stderr);
  		goto out;

How does that work?

# dmsetup

Should give failure status.
(It already does.)

# dmsetup help

Should give success.
(It already does.)

# dmsetup -c -o help

Should give success.
(It doesn't.)



Here is second try to address only this explicit problem:

_report_init() is able to return 1 for 'help'/'?'
(same check is in libdm-report.c)
Following checks detects that 'info' invoked it.

What still looks weird is 'dmsetup ls -c -o help' - which returns 1 - but displays meaningless help message for this command, (but this is not influenced by this patch).

Zdenek


Index: tools/dmsetup.c
===================================================================
RCS file: /cvs/lvm2/LVM2/tools/dmsetup.c,v
retrieving revision 1.141
diff -u -p -r1.141 dmsetup.c
--- tools/dmsetup.c	8 Jul 2010 14:29:28 -0000	1.141
+++ tools/dmsetup.c	8 Jul 2010 15:40:35 -0000
@@ -2652,6 +2652,9 @@ static int _report_init(struct command *
 	r = 1;

 out:
+	if (!strcasecmp(options, "help") || !strcmp(options, "?"))
+		r = 1;
+
 	if (len)
 		dm_free(options);

@@ -3360,8 +3363,15 @@ int main(int argc, char **argv)
 	if (!_switches[COLS_ARG] && !strcmp(c->name, "splitname"))
 		_switches[COLS_ARG]++;

-	if (_switches[COLS_ARG] && !_report_init(c))
-		goto out;
+	if (_switches[COLS_ARG]) {
+		if (!_report_init(c))
+			goto out;
+		if (!_report) {
+			if (!strcmp(c->name, "info"))
+				r = 0;  /* info -c -o help */
+			goto out;
+		}
+	}

 	#ifdef UDEV_SYNC_SUPPORT
 	if (!_set_up_udev_support(dev_dir))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]