summaryrefslogtreecommitdiff
path: root/src/lib/file.c
diff options
context:
space:
mode:
authorbpc2003 <wpesfriendnva@gmail.com>2025-04-24 17:08:08 -0400
committerbpc2003 <wpesfriendnva@gmail.com>2025-04-24 17:08:08 -0400
commit2b7a3a815fb5d0b5155deec5f613730e898e4100 (patch)
tree00db87ef554335e1c9871330703d86d0247a4ee8 /src/lib/file.c
parent5b0d930e9e2605add559a70591573ffaa2fd8404 (diff)
Update Documentation
Diffstat (limited to 'src/lib/file.c')
-rw-r--r--src/lib/file.c100
1 files changed, 0 insertions, 100 deletions
diff --git a/src/lib/file.c b/src/lib/file.c
deleted file mode 100644
index 8b0c715..0000000
--- a/src/lib/file.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "mdb.h"
-
-static char *getpair(int *c, FILE *fp);
-
-// readdb - reads the given file into a key table list
-// if fp returns NULL it will return the empty list
-// if readdb fails it will return NULL
-tablist_t *readdb(char *filename)
-{
- int len = 2;
- tablist_t *list = calloc(len, sizeof(tablist_t));
- list[0].len = len;
- FILE *fp;
- if (filename == NULL ||
- (fp = fopen(filename, "rb")) == 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) goto fail;
- setkeys(&list, i, &p, 1);
- free(p);
- break;
- case 251:
- if (open == 1) goto fail;
- open = 1;
- break;
- case 254:
- open = 0;
- i++;
- break;
- default:
- goto fail;
- }
- }
- fclose(fp);
- return list;
-
-fail:
- fclose(fp);
- delkeys(list, -1, NULL, 0);
- free(list);
- return NULL;
-}
-
-// writedb - writes a keytablist to a given file
-void writedb(char *filename, tablist_t *list)
-{
- FILE *fp = fopen(filename, "wb");
- if (fp == NULL)
- return;
- for (int i = 0; i < list[0].len; ++i) {
- fputc(0xFB, fp);
- tablist_t *indexes = getkeys(list, i, NULL, 0);
- for (int j = 0; indexes[0].tab[j].flag; ++j) {
- fprintf(fp, "\xfa%s:", indexes[0].tab[j].key);
- switch (indexes[0].tab[j].flag) {
- case 1:
- fprintf(fp, "%.2lf\xfc", indexes[0].tab[j].value.num);
- break;
- case 2:
- fprintf(fp, "%s\xfc", indexes[0].tab[j].value.boolean ?
- "true" : "false");
- break;
- case 3:
- fprintf(fp, "%s\xfc", indexes[0].tab[j].value.str);
- break;
- }
- }
- free(indexes);
- fputc(0xFE, fp);
- }
- 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;
-}