summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorbpc2003 <wpesfriendnva@gmail.com>2025-05-23 14:23:10 -0400
committerbpc2003 <wpesfriendnva@gmail.com>2025-05-23 14:23:10 -0400
commit0cb3dab6b0fc4b5ebe00c0afaaceb68dcf98c6dc (patch)
tree468adce03e77dc837d022d99d0b07260626123c0 /src/main.c
parent175c04f2972c2a65e29ba2456ba5d058c35dcf87 (diff)
Migrating from personal testing framework to Unity
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c98
1 files changed, 3 insertions, 95 deletions
diff --git a/src/main.c b/src/main.c
index 418addd..7d06d65 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,103 +1,11 @@
-#include <ctype.h>
-#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
-#include "cmd.h"
#include "include/xdbms.h"
-int getid(char *selector);
-int printkeys(tablist_t *list, int id, char **keys, int klen);
-void printkey(tabidx_t idx);
-
int main(int argc, char **argv) {
- if (argc > 2) {
- printf("usage: %s [db file]\n", argv[0]);
- exit(1);
- }
- char *filename = NULL;
- if (argc == 2)
- filename = argv[1];
- tablist_t *list = readdb(filename);
- if (list == NULL)
+ if (argc == 1)
exit(1);
- char *cmd = calloc(1024, sizeof(char));
-
- while (fgets(cmd, 1024, stdin) != NULL) {
- cmd[strlen(cmd) - 1] = '\0';
- if (!strcmp(cmd, "exit") || !strcmp(cmd, ""))
- break;
- struct cmd evaled = eval(cmd);
- int id = getid(evaled.selector);
- switch (evaled.type) {
- case GET:
- printkeys(list, id, evaled.params, evaled.plen);
- break;
- case SET:
- id = setkeys(&list, id, evaled.params, evaled.plen);
- if (!id && filename)
- writedb(filename, list);
- break;
- case DEL:
- id = delkeys(list, id, evaled.params, evaled.plen);
- if (!id && filename)
- writedb(filename, list);
- break;
- case ERR:
- fprintf(stderr, "Unkown command: %s\n", cmd);
- break;
- }
- if (evaled.params != NULL) {
- for (int i = 0; i < evaled.plen; ++i)
- free(evaled.params[i]);
- free(evaled.params);
- }
- free(evaled.selector);
- }
- free(cmd);
-
- delkeys(list, -1, NULL, 0);
- free(list);
+ char *filename = argv[1];
+ xdb_init(filename);
exit(0);
}
-
-int getid(char *selector) {
- if (selector == NULL)
- return -2;
- int id;
- if (!strcmp(selector, "*"))
- return -1;
- else if (isdigit(selector[0]) && (id = atoi(selector)) >= 0)
- return id;
- else
- return -2;
-}
-
-int printkeys(tablist_t *list, int id, char **keys, int klen) {
- tablist_t *indexes = getkeys(list, id, keys, klen);
- if (indexes == NULL)
- return 1;
- for (int i = 0; i < indexes[0].len; ++i) {
- printf("{ id: %d ", i);
- for (int j = 0; indexes[i].tab[j].flag; ++j)
- printkey(indexes[i].tab[j]);
- printf("}\n");
- }
- free(indexes);
- return 0;
-}
-
-void printkey(tabidx_t idx) {
- printf("%s: ", idx.key);
- switch (idx.flag) {
- case 1:
- printf("%.2lf ", idx.value.num);
- break;
- case 2:
- printf("%s ", idx.value.boolean ? "true" : "false");
- break;
- case 3:
- printf("%s ", idx.value.str);
- break;
- }
-}