All of lore.kernel.org
 help / color / mirror / Atom feed
From: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
To: "linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>
Subject: [PATCH 2/2 v2] fix a regression that "property" with -t option doesn't work
Date: Wed, 16 Mar 2016 11:11:07 +0900	[thread overview]
Message-ID: <56E8C0BB.1050307@jp.fujitsu.com> (raw)
In-Reply-To: <56E8BE67.6030802@jp.fujitsu.com>

"property" is considered as working without any options
from the following commit.

commit 176aeca9a148 ("btrfs-progs: add getopt stubs where needed")

However, we can pass -t option to this command.

* actual result

  ==================================================
  $ ./btrfs prop list -t f /btrfs
  btrfs property list: invalid option -- 't'
  usage: btrfs property list [-t <type>] <object>

      Lists available properties with their descriptions for the given object.

      Please see the help of 'btrfs property get' for a description of
      objects and object types.

  ==================================================

* expected result

  ==================================================
  $ ./btrfs prop list -t f /btrfs
  label               Set/get label of device.
  ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com
---
v2: Reflect David's comment.
  - Check the number of non-option arguments
---
 cmds-property.c | 35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/cmds-property.c b/cmds-property.c
index 5b4da26..eed5f4a 100644
--- a/cmds-property.c
+++ b/cmds-property.c
@@ -294,10 +294,11 @@ out:
 static void parse_args(int argc, char **argv,
 		       const char * const *usage_str,
 		       int *types, char **object,
-		       char **name, char **value)
+		       char **name, char **value, int min_nonopt_args)
 {
 	int ret;
 	char *type_str = NULL;
+	int max_nonopt_args = 0;

 	optind = 1;
 	while (1) {
@@ -314,6 +315,17 @@ static void parse_args(int argc, char **argv,
 		}
 	}

+	if (object)
+		max_nonopt_args++;
+	if (name)
+		max_nonopt_args++;
+	if (value)
+		max_nonopt_args++;
+
+	if (check_argc_min(argc - optind, min_nonopt_args) ||
+	    check_argc_max(argc - optind, max_nonopt_args))
+		usage(usage_str);
+
 	*types = 0;
 	if (type_str) {
 		if (!strcmp(type_str, "s") || !strcmp(type_str, "subvol")) {
@@ -379,13 +391,8 @@ static int cmd_property_get(int argc, char **argv)
 	char *name = NULL;
 	int types = 0;

-	clean_args_no_options(argc, argv, cmd_property_get_usage);
-
-	if (check_argc_min(argc, 2) || check_argc_max(argc, 5))
-		usage(cmd_property_get_usage);
-
 	parse_args(argc, argv, cmd_property_get_usage, &types, &object, &name,
-			NULL);
+		   NULL, 1);
 	if (!object) {
 		error("invalid arguments");
 		usage(cmd_property_get_usage);
@@ -415,13 +422,8 @@ static int cmd_property_set(int argc, char **argv)
 	char *value = NULL;
 	int types = 0;

-	clean_args_no_options(argc, argv, cmd_property_set_usage);
-
-	if (check_argc_min(argc, 4) || check_argc_max(argc, 6))
-		usage(cmd_property_set_usage);
-
 	parse_args(argc, argv, cmd_property_set_usage, &types,
-			&object, &name, &value);
+		   &object, &name, &value, 3);
 	if (!object || !name || !value) {
 		error("invalid arguments");
 		usage(cmd_property_set_usage);
@@ -446,13 +448,8 @@ static int cmd_property_list(int argc, char **argv)
 	char *object = NULL;
 	int types = 0;

-	clean_args_no_options(argc, argv, cmd_property_list_usage);
-
-	if (check_argc_min(argc, 2) || check_argc_max(argc, 4))
-		usage(cmd_property_list_usage);
-
 	parse_args(argc, argv, cmd_property_list_usage,
-			&types, &object, NULL, NULL);
+		   &types, &object, NULL, NULL, 1);
 	if (!object) {
 		error("invalid arguments");
 		usage(cmd_property_list_usage);
-- 
2.5.0

  reply	other threads:[~2016-03-16  2:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-16  2:01 [PATCH 1/2] btrfs-progs: Describe optarg of -m option in the manpage of receive Satoru Takeuchi
2016-03-16  2:11 ` Satoru Takeuchi [this message]
2016-03-16  2:15   ` [PATCH 2/2 v2] btrfs-progs: Fix a regression that "property" with -t option doesn't work Satoru Takeuchi
2016-03-16  9:28     ` David Sterba
2016-03-16  9:28 ` [PATCH 1/2] btrfs-progs: Describe optarg of -m option in the manpage of receive David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56E8C0BB.1050307@jp.fujitsu.com \
    --to=takeuchi_satoru@jp.fujitsu.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.