diff options
author | bpc2003 <wpesfriendnva@gmail.com> | 2025-03-12 13:44:08 -0400 |
---|---|---|
committer | bpc2003 <wpesfriendnva@gmail.com> | 2025-03-12 13:44:08 -0400 |
commit | 5f5b2e8ce67ce18519aea946a5e86b64384d491f (patch) | |
tree | a7c0b4fffe21f16bb7cc12a4923ee392d979d410 | |
parent | 5a58593fa8d9aa98811a00035356a479b992df26 (diff) |
Added handling for params
-rw-r--r-- | src/cmd.c | 16 | ||||
-rw-r--r-- | src/cmd.h | 2 | ||||
-rw-r--r-- | src/main.c | 6 |
3 files changed, 22 insertions, 2 deletions
@@ -4,6 +4,7 @@ #include "cmd.h" char *getselector(char *str); +char **getparams(char *str); struct cmd eval(char *str) { @@ -22,6 +23,7 @@ struct cmd eval(char *str) } ret.selector = getselector(str); + ret.params = getparams(str); return ret; } @@ -39,3 +41,17 @@ char *getselector(char *str) selector[i] = '\0'; return selector; } + +char **getparams(char *str) +{ + char **params = calloc(1, sizeof(char *)); + char *tok = strtok(str, "/"); + int i = 0; + while ((tok = strtok(NULL, "/"))) { + if (i >= 1) + params = realloc(params, (i + 1) * sizeof(char *)); + params[i] = calloc(strlen(tok) + 1, sizeof(char)); + strcpy(params[i++], tok); + } + return params; +} @@ -9,7 +9,7 @@ enum cmdtype { struct cmd { enum cmdtype type; char *selector; - char *params; + char **params; }; struct cmd eval(char *str); @@ -33,9 +33,13 @@ int main(int argc, char **argv) break; } printf("%s\n", evaled.selector); + for (int i = 0; evaled.params[i]; ++i) { + printf("%s\n", evaled.params[i]); + free(evaled.params[i]); + } + free(evaled.params); free(evaled.selector); } - free(cmd); writedb(filename, list); for (int i = 0; i < list[0].len; ++i) { |