summaryrefslogtreecommitdiff
path: root/src/file.c
diff options
context:
space:
mode:
authorbpc2003 <wpesfriendnva@gmail.com>2025-03-10 16:31:37 -0400
committerbpc2003 <wpesfriendnva@gmail.com>2025-03-10 16:31:37 -0400
commit2011c1e008055005bf980acbff549c8f46a34f25 (patch)
tree54f6b74a190637fa2303bd6db4089bc60e419f2e /src/file.c
parentde52acd37ea5634712ed78c624f77566e3ac634e (diff)
moved mdb.h and associated files int lib
Diffstat (limited to 'src/file.c')
-rw-r--r--src/file.c92
1 files changed, 0 insertions, 92 deletions
diff --git a/src/file.c b/src/file.c
deleted file mode 100644
index e3cee9d..0000000
--- a/src/file.c
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "include/mdb.h"
-
-static char *getpair(int *c, FILE *fp);
-
-struct keytablist *readdb(char *filename)
-{
- int len = 2;
- struct keytablist *list = calloc(len, sizeof(struct keytablist));
- FILE *fp = fopen(filename, "rb");
- if (fp == NULL)
- return list;
-
- int c, i = 0, open = 0;
- char *p;
- while ((c = fgetc(fp)) != EOF) {
- switch (c) {
- case 250:
- p = getpair(&c, fp);
- if (p == NULL) {
- fprintf(stderr, "missing pair closing byte!\n");
- return NULL;
- }
- setkey(&list, &len, i, p);
- free(p);
- break;
- case 251:
- if (open == 1) {
- fprintf(stderr, "missing object closing byte!\n");
- return NULL;
- }
- open = 1;
- break;
- case 254:
- open = 0;
- i++;
- break;
- default:
- fprintf(stderr, "Unknown byte: %d\n", c);
- return NULL;
- }
- }
- fclose(fp);
- return list;
-}
-
-void writedb(char *filename, struct keytablist *list)
-{
- FILE *fp = fopen(filename, "wb");
- for (int i = 0; i < list[0].len; ++i) {
- fprintf(fp, "\xfb");
- int *indexes = getkeys(list, i);
- for (int j = 0; indexes[j]; ++j) {
- fprintf(fp, "\xfa%s:", list[i].tab[indexes[j]].key);
- switch (list[i].tab[indexes[j]].flag) {
- case 1:
- fprintf(fp, "%.2lf\xfc", list[i].tab[indexes[j]].v.num);
- break;
- case 2:
- fprintf(fp, "%s\xfc", list[i].tab[indexes[j]].v.b == 1 ? "true" : "false");
- break;
- case 3:
- fprintf(fp, "%s\xfc", list[i].tab[indexes[j]].v.str);
- break;
- }
- }
- free(indexes);
- fprintf(fp, "\xfe");
- }
- fclose(fp);
-}
-
-static char *getpair(int *c, FILE *fp)
-{
- char *pair = calloc(3, sizeof(char));
- int i = 0, len = 3;
- while ((*c = fgetc(fp)) != 252 && *c != EOF) {
- if (i >= len)
- pair = realloc(pair, ++len * sizeof(char));
- pair[i++] = *c;
- }
- pair = realloc(pair, ++len * sizeof(char));
- pair[i] = '\0';
- if (*c != 252) {
- free(pair);
- return NULL;
- }
- return pair;
-}