From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <olivier.matz@6wind.com>
Received: from mail-wi0-f174.google.com (mail-wi0-f174.google.com
 [209.85.212.174]) by dpdk.org (Postfix) with ESMTP id 2F36A6AC6
 for <dev@dpdk.org>; Fri, 28 Feb 2014 18:24:55 +0100 (CET)
Received: by mail-wi0-f174.google.com with SMTP id f8so1027245wiw.7
 for <dev@dpdk.org>; Fri, 28 Feb 2014 09:26:22 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=rwsiZF1s9ErDv6wga1fytNUeCvCs+nPojLCKuqGqbbE=;
 b=hDRHTEchTzubpLMdN53RiNh43KslsQS6A5mf0E4691gnO4IlN7qQmlMpJLjLkVGMkZ
 xdZFJ4MPHYeNlsB0FFje+L3/pqLL3xHZDjrzHjd+3QsrnoVsySFwGzxRN2qEAczN2fsp
 3fj1MTtlfALPEN+VUhoSkQmDAeg0BYsWDYp8y7uHufBDOsJvXAc4tnMCJYxpbq+pxg1Q
 Jrk36iqjmjVh9H9jHYZhHdhg5UOr0YomzaufqBSD7X87PpPXjYpjKAQ8FStrKX/RNRVH
 H0WSeCJi+TL+RtHJueiUbSM3XX/EeTod7e+5pngEbcva7l0DUcEsqCLk7GYnBeCa7ZUw
 82fg==
X-Gm-Message-State: ALoCoQnanGSqntUlKR3KyUyycR8UdXvrz9Pg4nzJmBVzGf8h9xrW37FLuwD0wym9MFrB9tSyMsT+
X-Received: by 10.195.13.103 with SMTP id ex7mr3862028wjd.3.1393608382106;
 Fri, 28 Feb 2014 09:26:22 -0800 (PST)
Received: from glumotte.dev.6wind.com (guy78-3-82-239-227-177.fbx.proxad.net.
 [82.239.227.177])
 by mx.google.com with ESMTPSA id hy8sm5908439wjb.2.2014.02.28.09.26.20
 for <multiple recipients>
 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
 Fri, 28 Feb 2014 09:26:21 -0800 (PST)
From: Olivier Matz <olivier.matz@6wind.com>
To: dev@dpdk.org
Date: Fri, 28 Feb 2014 18:25:47 +0100
Message-Id: <1393608350-4431-9-git-send-email-olivier.matz@6wind.com>
X-Mailer: git-send-email 1.8.5.3
In-Reply-To: <1393608350-4431-1-git-send-email-olivier.matz@6wind.com>
References: <1393608350-4431-1-git-send-email-olivier.matz@6wind.com>
Subject: [dpdk-dev] [PATCH 08/11] device-args: use a comma instead of
	semicolon to separate key/values
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 28 Feb 2014 17:24:55 -0000

This commit changes the API of --use-device. It changes the separator
used between each key/value pairs from ';' to ','. Indeed, ';' was not
the best choice as this character is also used to separate shell
commands, forcing the user to surround arguments with quotes.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 app/test/test_devargs.c                     | 10 +++++-----
 app/test/test_eal_flags.c                   |  4 ++--
 app/test/test_kvargs.c                      | 14 +++++++-------
 lib/librte_eal/common/eal_common_devargs.c  |  4 ++--
 lib/librte_eal/common/include/rte_devargs.h |  8 ++++----
 lib/librte_eal/linuxapp/eal/eal.c           |  2 +-
 lib/librte_kvargs/rte_kvargs.h              |  6 +++---
 7 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c
index 4d45d53..f5451b2 100644
--- a/app/test/test_devargs.c
+++ b/app/test/test_devargs.c
@@ -68,7 +68,7 @@ test_devargs(void)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, "0000:5:00.0") < 0)
 		goto fail;
-	if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI, "04:00.0;arg=val") < 0)
+	if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI, "04:00.0,arg=val") < 0)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI, "0000:01:00.1") < 0)
 		goto fail;
@@ -80,20 +80,20 @@ test_devargs(void)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring0") < 0)
 		goto fail;
-	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1;key=val;k2=val2") < 0)
+	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1,key=val,k2=val2") < 0)
 		goto fail;
 	if (rte_eal_devargs_type_count(RTE_DEVTYPE_VIRTUAL) != 2)
 		goto fail;
 	free_devargs_list();
 
 	/* check virtual device with argument parsing */
-	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1;k1=val;k2=val2") < 0)
+	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1,k1=val,k2=val2") < 0)
 		goto fail;
 	devargs = TAILQ_FIRST(&devargs_list);
 	if (strncmp(devargs->virtual.drv_name, "eth_ring1",
 			sizeof(devargs->virtual.drv_name) != 0))
 		goto fail;
-	if (strncmp(devargs->args, "k1=val;k2=val2", sizeof(devargs->args) != 0))
+	if (strncmp(devargs->args, "k1=val,k2=val2", sizeof(devargs->args) != 0))
 		goto fail;
 	free_devargs_list();
 
@@ -117,7 +117,7 @@ test_devargs(void)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, "foo") == 0)
 		goto fail;
-	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, ";") == 0)
+	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, ",") == 0)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, "000f:0:0") == 0)
 		goto fail;
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index 9bab1a5..45d3d02 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -313,8 +313,8 @@ test_whitelist_flag(void)
 	const char *wlval2[] = {prgname, prefix, mp_flag, "-n", "1", "-c", "1",
 			use_device, "09:0B.3", use_device, "0a:0b.1"};
 	const char *wlval3[] = {prgname, prefix, mp_flag, "-n", "1", "-c", "1",
-			use_device, "09:0B.3;type=test",
-			use_device, "08:00.1;type=normal"};
+			use_device, "09:0B.3,type=test",
+			use_device, "08:00.1,type=normal"};
 
 	for (i = 0; i < sizeof(wlinval) / sizeof(wlinval[0]); i++) {
 		if (launch_proc(wlinval[i]) == 0) {
diff --git a/app/test/test_kvargs.c b/app/test/test_kvargs.c
index 2db9d08..c417ba2 100644
--- a/app/test/test_kvargs.c
+++ b/app/test/test_kvargs.c
@@ -84,7 +84,7 @@ static int test_valid_kvargs(void)
 	rte_kvargs_free(kvlist);
 
 	/* first test without valid_keys */
-	args = "foo=1234;check=value0;check=value1";
+	args = "foo=1234,check=value0,check=value1";
 	valid_keys = NULL;
 	kvlist = rte_kvargs_parse(args, valid_keys);
 	if (kvlist == NULL) {
@@ -145,7 +145,7 @@ static int test_valid_kvargs(void)
 	rte_kvargs_free(kvlist);
 
 	/* second test using valid_keys */
-	args = "foo=droids;check=value0;check=value1;check=wrong_value";
+	args = "foo=droids,check=value0,check=value1,check=wrong_value";
 	valid_keys = valid_keys_list;
 	kvlist = rte_kvargs_parse(args, valid_keys);
 	if (kvlist == NULL) {
@@ -190,11 +190,11 @@ static int test_invalid_kvargs(void)
 	/* list of argument that should fail */
 	const char *args_list[] = {
 		"wrong-key=x",     /* key not in valid_keys_list */
-		"foo=1;foo=",      /* empty value */
-		"foo=1;;foo=2",    /* empty key/value */
-		"foo=1;foo",       /* no value */
-		"foo=1;=2",        /* no key */
-		";=",              /* also test with a smiley */
+		"foo=1,foo=",      /* empty value */
+		"foo=1,,foo=2",    /* empty key/value */
+		"foo=1,foo",       /* no value */
+		"foo=1,=2",        /* no key */
+		",=",              /* also test with a smiley */
 		NULL };
 	const char **args;
 	const char *valid_keys_list[] = { "foo", "check", NULL };
diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c
index de4ac6c..3d6656a 100644
--- a/lib/librte_eal/common/eal_common_devargs.c
+++ b/lib/librte_eal/common/eal_common_devargs.c
@@ -70,8 +70,8 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
 	memset(devargs, 0, sizeof(*devargs));
 	devargs->type = devtype;
 
-	/* set the first ';' to '\0' to split name and arguments */
-	sep = strchr(buf, ';');
+	/* set the first ',' to '\0' to split name and arguments */
+	sep = strchr(buf, ',');
 	if (sep != NULL) {
 		sep[0] = '\0';
 		snprintf(devargs->args, sizeof(devargs->args), "%s", sep + 1);
diff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h
index fbfbe45..6dd901a 100644
--- a/lib/librte_eal/common/include/rte_devargs.h
+++ b/lib/librte_eal/common/include/rte_devargs.h
@@ -96,12 +96,12 @@ extern struct rte_devargs_list devargs_list;
  * Add a device to the user device list
  *
  * For PCI devices, the format of arguments string is "PCI_ADDR" or
- * "PCI_ADDR;key=val;key2=val2;...". Examples: "08:00.1", "0000:5:00.0",
- * "04:00.0;arg=val".
+ * "PCI_ADDR,key=val,key2=val2,...". Examples: "08:00.1", "0000:5:00.0",
+ * "04:00.0,arg=val".
  *
  * For virtual devices, the format of arguments string is "DRIVER_NAME*"
- * or "DRIVER_NAME*;key=val;key2=val2;...". Examples: "eth_ring",
- * "eth_ring0", "eth_pmdAnything;arg=0:arg2=1". The validity of the
+ * or "DRIVER_NAME*,key=val,key2=val2,...". Examples: "eth_ring",
+ * "eth_ring0", "eth_pmdAnything,arg=0:arg2=1". The validity of the
  * driver name is not checked by this function, it is done when probing
  * the drivers.
  *
diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index 6502755..67b2097 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -612,7 +612,7 @@ eal_parse_use_device(const char *optarg)
 		return -1;
 
 	/* remove arguments in 'dup' string */
-	sep = strchr(dup, ';');
+	sep = strchr(dup, ',');
 	if (sep != NULL)
 		*sep = '\0';
 
diff --git a/lib/librte_kvargs/rte_kvargs.h b/lib/librte_kvargs/rte_kvargs.h
index 71c9630..ef4efab 100644
--- a/lib/librte_kvargs/rte_kvargs.h
+++ b/lib/librte_kvargs/rte_kvargs.h
@@ -40,7 +40,7 @@
  * RTE Argument parsing
  *
  * This module can be used to parse arguments whose format is
- * key1=value1;key2=value2;key3=value3;...
+ * key1=value1,key2=value2,key3=value3,...
  *
  * The same key can appear several times with the same or a different
  * value. Indeed, the arguments are stored as a list of key/values
@@ -58,7 +58,7 @@ extern "C" {
 #define RTE_KVARGS_MAX 32
 
 /** separator character used between each pair */
-#define RTE_KVARGS_PAIRS_DELIM	";"
+#define RTE_KVARGS_PAIRS_DELIM	","
 
 /** separator character used between key and value */
 #define RTE_KVARGS_KV_DELIM	"="
@@ -83,7 +83,7 @@ struct rte_kvargs {
  * Allocate a rte_kvargs and store key/value associations from a string
  *
  * The function allocates and fills a rte_kvargs structure from a given
- * string whose format is key1=value1;key2=value2;...
+ * string whose format is key1=value1,key2=value2,...
  *
  * The structure can be freed with rte_kvargs_free().
  *
-- 
1.8.5.3