From 5f5b2e8ce67ce18519aea946a5e86b64384d491f Mon Sep 17 00:00:00 2001 From: bpc2003 Date: Wed, 12 Mar 2025 13:44:08 -0400 Subject: Added handling for params --- src/cmd.c | 16 ++++++++++++++++ src/cmd.h | 2 +- src/main.c | 6 +++++- 3 files changed, 22 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cmd.c b/src/cmd.c index 266f17b..d121be1 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -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; +} diff --git a/src/cmd.h b/src/cmd.h index 5b0e7c8..a3e3fe8 100644 --- a/src/cmd.h +++ b/src/cmd.h @@ -9,7 +9,7 @@ enum cmdtype { struct cmd { enum cmdtype type; char *selector; - char *params; + char **params; }; struct cmd eval(char *str); diff --git a/src/main.c b/src/main.c index 90d7879..deec7f3 100644 --- a/src/main.c +++ b/src/main.c @@ -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) { -- cgit v1.2.3