[PATCH] handle quoted module parameters

From: Randy.Dunlap
Date: Thu Nov 11 2004 - 23:20:40 EST


Here's a patch with better description.


Fix module parameter quote handling.
Module parameter strings (with spaces) are quoted like so:
"modprm=this test"
and not like this:
modprm="this test"

Signed-off-by: Randy Dunlap <rddunlap@xxxxxxxx>

diffstat:=
kernel/params.c | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)


--
~Randy

diff -Naurp ./kernel/params.c~modprm_quoted ./kernel/params.c
--- ./kernel/params.c~modprm_quoted 2004-11-11 15:13:26.000000000 -0800
+++ ./kernel/params.c 2004-11-11 19:42:36.714124784 -0800
@@ -77,10 +77,16 @@ static int parse_one(char *param,
static char *next_arg(char *args, char **param, char **val)
{
unsigned int i, equals = 0;
- int in_quote = 0;
+ int in_quote = 0, quoted = 0;
+ char *next;

/* Chew any extra spaces */
while (*args == ' ') args++;
+ if (*args == '"') {
+ args++;
+ in_quote = 1;
+ quoted = 1;
+ }

for (i = 0; args[i]; i++) {
if (args[i] == ' ' && !in_quote)
@@ -106,13 +112,16 @@ static char *next_arg(char *args, char *
if (args[i-1] == '"')
args[i-1] = '\0';
}
+ if (quoted && args[i-1] == '"')
+ args[i-1] = '\0';
}

if (args[i]) {
args[i] = '\0';
- return args + i + 1;
+ next = args + i + 1;
} else
- return args + i;
+ next = args + i;
+ return next;
}

/* Args looks like "foo=bar,bar2 baz=fuz wiz". */