feat: owloysius - dynamic init function invocator
[lunaix-os.git] / lunaix-os / kernel / kcmd.c
index dc06c189a05a3b1ed0fca9875603155f41efe5cc..6860065fa0a5732e9c79130fafff74d7b1d4d0d5 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