make log a bit verbose for some useful information
[lunaix-os.git] / lunaix-os / kernel / kcmd.c
index dc06c189a05a3b1ed0fca9875603155f41efe5cc..2afe9a035859b4d2debb6990b7e7d672e24ef7c5 100644 (file)
@@ -34,6 +34,10 @@ extract_next_option(struct extractor* ctx)
     s->len = 0;
     s->pos = i;
 
+    if (!ctx->cmdline[i]) {
+        return false;
+    }
+
     while((c = ctx->cmdline[i++])) {
         if (c == ' ') {
             while ((c = ctx->cmdline[i++]) && c == ' ');
@@ -50,21 +54,17 @@ extract_next_option(struct extractor* ctx)
                 state = PARSE_VAL;
                 s = &ctx->val;
                 s->len = 0;
-                s->pos = i + 1;
+                s->pos = i;
                 continue;
             }
         }
 
-        while ((c = ctx->cmdline[i++]) && c != ' ') {
-            s->len++;
-        }
-
-        i--;
+        s->len++;
     }
 
-    ctx->pos = i;
+    ctx->pos = i - 1;
 
-    return !!c;
+    return true;
 }
 
 #define MAX_KEYSIZE 16
@@ -74,7 +74,12 @@ kcmd_parse_cmdline(char* cmd_line)
 {
     struct extractor ctx = { .cmdline = cmd_line, .pos = 0 };
     
-    while(extract_next_option(&ctx)) {
+    INFO("active kcmds");
+
+    // first option is always kernel itself
+    extract_next_option(&ctx);
+
+    while (extract_next_option(&ctx)) {
         if (!ctx.key.len) {
             continue;
         }
@@ -96,6 +101,9 @@ kcmd_parse_cmdline(char* cmd_line)
         
         memcpy(kopt->buf, &cmd_line[ctx.key.pos], ctx.key.len);
         
+        kopt->hashkey = HSTR(kopt->buf, ctx.key.len);
+        hstr_rehash(&kopt->hashkey, HSTR_FULL_HASH);
+
         if (ctx.val.len) {
             kopt->value = &kopt->buf[ctx.key.len + 1];
             size_t max_val_len = maxlen - ctx.key.len;
@@ -106,11 +114,12 @@ kcmd_parse_cmdline(char* cmd_line)
             }
 
             memcpy(kopt->value, &cmd_line[ctx.val.pos], ctx.val.len);
+            INFO("   %-10s =%s", kopt->hashkey.value, kopt->value);
+        }
+        else {
+            INFO("   %s", kopt->hashkey.value);
         }
         
-        kopt->hashkey = HSTR(kopt->buf, ctx.key.len);
-        hstr_rehash(&kopt->hashkey, HSTR_FULL_HASH);
-
         hashtable_hash_in(options, &kopt->node, kopt->hashkey.hash);
     }
 }