#include "config.h" #include "cmdline.h" #include #include "lib/string.h" #include "lib/printf.h" const char *s_cmdline = NULL; struct kvpair { const char *key, *value; } s_arguments[CMDLINE_MAX_ARGUMENTS] = { 0 }; size_t s_numargs = 0; void cmdline_init(char *cmdline) { s_cmdline = cmdline; size_t last_arg = 0; const char *arg = cmdline; for(char *s = cmdline; *s; s++) { if(*s == '=') { *(s++) = 0; s_arguments[last_arg].key = arg; arg = s; for(; *s && (*s != ' '); s++) { if(*s == '"') { s++; for(; *s && (*s != '"'); s++); s++; } } *(s++) = 0; s_arguments[last_arg++].value = arg; arg = s; } } s_numargs = last_arg; } void cmdline_print() { for(size_t i = 0; i < s_numargs; i++) { const char *arg_key = s_arguments[i].key; const char *arg_value = s_arguments[i].value; kprintf("cmdline: %s=%s\n", arg_key, arg_value); } } const char* cmdline_getarg(const char *key) { for(size_t i = 0; i < s_numargs; i++) { const char *arg_key = s_arguments[i].key; const char *arg_value = s_arguments[i].value; if(strncmp(arg_key, key, strlen(arg_key)) == 0) { return arg_value; } } return NULL; }