summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/init.c25
-rw-r--r--src/include/xdbms.c31
-rw-r--r--src/include/xdbms.h10
-rw-r--r--src/main.c6
4 files changed, 41 insertions, 31 deletions
diff --git a/src/include/init.c b/src/include/init.c
deleted file mode 100644
index 76f46a1..0000000
--- a/src/include/init.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "xdbms.h"
-#include "engine/engine.h"
-
-static tablist_t *db;
-
-int xdb_init(char *filename)
-{
- if (filename == NULL)
- fprintf(stderr, "Warning: running in-memory database\n");
- db = readdb(filename);
-
- tablist_t *tmp = getkeys(db, -1, NULL, 0);
- for (int i = 0; i < tmp[0].len; ++i) {
- printf("id: %d\n", i);
- for (int j = 0; tmp[0].tab[j].flag; ++j)
- printf("%s\n", tmp[0].tab[j].key);
- }
- free(tmp);
- delkeys(db, -1, NULL, 0);
- free(db);
- return 0;
-}
diff --git a/src/include/xdbms.c b/src/include/xdbms.c
new file mode 100644
index 0000000..eb6193e
--- /dev/null
+++ b/src/include/xdbms.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "engine/engine.h"
+#include "xml/xml.h"
+#include "xdbms.h"
+
+static tablist_t *db;
+
+int xdb_init(char *filename) {
+ if (filename == NULL)
+ fprintf(stderr, "Warning: running in-memory database\n");
+ db = readdb(filename);
+ if (db == NULL) {
+ fprintf(stderr, "Error: Invalid DB file\n");
+ return 1;
+ }
+ return 0;
+}
+
+void xdb_close(void) {
+ delkeys(db, -1, NULL, 0);
+ free(db);
+}
+
+char *xdb_stmt(char *stmt) {
+ map_t *decoded = decode(stmt);
+ printf("%s\n", encode(decoded));
+ freemap(decoded);
+ return NULL;
+}
diff --git a/src/include/xdbms.h b/src/include/xdbms.h
index a18996d..af7d1dc 100644
--- a/src/include/xdbms.h
+++ b/src/include/xdbms.h
@@ -1,13 +1,13 @@
#ifndef XDBMS_H
#define XDBMS_H
-// init: intialize an XDBMS DB
+// xdb_init: intialize an XDBMS DB
int xdb_init(char *filename);
-// exec: execute a statement on an XDBMS DB
-char *exec(char *stmt);
+// xdb_stmt: execute a statement on an XDBMS DB
+char *xdb_stmt(char *stmt);
-// close: close an XDBMS DB
-int close();
+// xdb_close: close an XDBMS DB
+void xdb_close(void);
#endif
diff --git a/src/main.c b/src/main.c
index 7d06d65..6ce4a1f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,6 +6,10 @@ int main(int argc, char **argv) {
if (argc == 1)
exit(1);
char *filename = argv[1];
- xdb_init(filename);
+ if (xdb_init(filename))
+ exit(1);
+ // TODO: make decoder be able to decode empty tags
+ xdb_stmt("<get><all>true</all></get>");
+ xdb_close();
exit(0);
}