lkml.org 
[lkml]   [2003]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] Don't turn - to _ when parsing params
    Date
    .... since they might not be boot parameters afterall (and hence need
    to get passed to init or the environment intact).

    Thanks,
    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, &params[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;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:32    [W:0.020 / U:31.196 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site