diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd.c | 22 | ||||
-rw-r--r-- | src/cmd.h | 17 | ||||
-rw-r--r-- | src/main.c | 40 |
3 files changed, 62 insertions, 17 deletions
diff --git a/src/cmd.c b/src/cmd.c new file mode 100644 index 0000000..7608d73 --- /dev/null +++ b/src/cmd.c @@ -0,0 +1,22 @@ +#include <string.h> + +#include "cmd.h" + + +struct cmd eval(char *str) +{ + struct cmd ret; + ret.params = NULL; + ret.selector = NULL; + if (!strncmp(str, "GET", 3)) { + ret.type = GET; + } else if (!strncmp(str, "SET", 3)) { + ret.type = SET; + } else if (!strncmp(str, "DEL", 3)) { + ret.type = DEL; + } else { + ret.type = ERR; + } + + return ret; +} diff --git a/src/cmd.h b/src/cmd.h new file mode 100644 index 0000000..5b0e7c8 --- /dev/null +++ b/src/cmd.h @@ -0,0 +1,17 @@ +#ifndef CMD_H +#define CMD_H + +enum cmdtype { + GET, SET, + DEL, ERR +}; + +struct cmd { + enum cmdtype type; + char *selector; + char *params; +}; + +struct cmd eval(char *str); + +#endif @@ -1,7 +1,9 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "lib/mdb.h" +#include "cmd.h" int main(int argc, char **argv) { @@ -9,26 +11,30 @@ int main(int argc, char **argv) exit(1); char *filename = argv[1]; struct keytablist *list = readdb(filename); + char *cmd = calloc(1024, sizeof(char)); - for (int i = 0; i < list[0].len; ++i) { - int *indexes = getkeys(list, i); - for (int j = 0; indexes[j]; ++j) { - printf("%s: ", list[i].tab[indexes[j]].key); - switch (list[i].tab[indexes[j]].flag) { - case 1: - printf("%.2lf\n", list[i].tab[indexes[j]].v.num); - break; - case 2: - printf("%d\n", list[i].tab[indexes[j]].v.b); - break; - case 3: - printf("%s\n", list[i].tab[indexes[j]].v.str); - break; - } - delkey(list, i, list[i].tab[indexes[j]].key); + while (fgets(cmd, 1024, stdin) != NULL) { + cmd[strlen(cmd) - 1] = '\0'; + if (!strcmp(cmd, "exit")) + break; + struct cmd evaled = eval(cmd); + switch (evaled.type) { + case GET: + printf("GET\n"); + break; + case SET: + printf("SET\n"); + break; + case DEL: + printf("DEL\n"); + break; + case ERR: + printf("ERR\n"); + break; } - free(indexes); } + + free(cmd); free(list); exit(0); } |