From: Rusty Russell <rusty@rustcorp.com.au>
To: Mikael Pettersson <mikpe@csd.uu.se>
Cc: Ingo Oeser <ingo.oeser@informatik.tu-chemnitz.de>
Cc: linux-kernel@vger.kernel.org, akpm@zip.com.au
Subject: Re: kernel param and KBUILD_MODNAME name-munging mess
Date: Tue, 28 Jan 2003 20:15:09 +1100 [thread overview]
Message-ID: <20030128091625.553DF2C2B6@lists.samba.org> (raw)
In-Reply-To: Your message of "Wed, 22 Jan 2003 11:20:01 BST." <15918.28753.632988.981832@harpo.it.uu.se>
In message <15918.28753.632988.981832@harpo.it.uu.se> you write:
> That's a workaround for this particular case, but the name-munging
> is still wrong and broken.
Absolutely agreed. Patch re-xmitted below.
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
Name: Avoid mangling - in parameters
Author: Rusty Russell
Status: Trivial (tested in userspace framework)
D: Mikael Pettersson points out that "-s" gets mangled to "_s" on the
D: kernel command line, even though it turns out not to be a
D: parameter.
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.59/kernel/params.c working-2.5.59-underscore/kernel/params.c
--- linux-2.5.59/kernel/params.c 2003-01-02 14:48:01.000000000 +1100
+++ working-2.5.59-underscore/kernel/params.c 2003-01-21 18:16:05.000000000 +1100
@@ -27,6 +27,22 @@
#define DEBUGP(fmt, a...)
#endif
+static inline int dash2underscore(char c)
+{
+ if (c == '-')
+ return '_';
+ return c;
+}
+
+static inline int parameq(const char *input, const char *paramname)
+{
+ unsigned int i;
+ for (i = 0; dash2underscore(input[i]) == paramname[i]; i++)
+ if (input[i] == '\0')
+ return 1;
+ return 0;
+}
+
static int parse_one(char *param,
char *val,
struct kernel_param *params,
@@ -37,7 +53,7 @@ static int parse_one(char *param,
/* Find parameter */
for (i = 0; i < num_params; i++) {
- if (strcmp(param, params[i].name) == 0) {
+ if (parameq(param, params[i].name)) {
DEBUGP("They are equal! Calling %p\n",
params[i].set);
return params[i].set(val, ¶ms[i]);
@@ -69,8 +85,6 @@ static char *next_arg(char *args, char *
if (equals == 0) {
if (args[i] == '=')
equals = i;
- else if (args[i] == '-')
- args[i] = '_';
}
if (args[i] == '"')
in_quote = !in_quote;
prev parent reply other threads:[~2003-01-28 9:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-20 13:41 kernel param and KBUILD_MODNAME name-munging mess Mikael Pettersson
2003-01-21 6:26 ` Vamsi Krishna S.
2003-01-21 7:23 ` Rusty Russell
2003-01-22 9:51 ` Ingo Oeser
2003-01-22 10:20 ` Mikael Pettersson
2003-01-22 11:19 ` Alex Riesen
2003-01-22 17:25 ` Kai Germaschewski
2003-01-22 19:41 ` Roman Zippel
2003-01-28 9:15 ` Rusty Russell [this message]
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=20030128091625.553DF2C2B6@lists.samba.org \
--to=rusty@rustcorp.com.au \
--cc=ingo.oeser@informatik.tu-chemnitz.de \
--cc=mikpe@csd.uu.se \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox