summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--src/lib/test/test.c37
-rw-r--r--src/lib/test/test.db1
-rw-r--r--src/main.c21
4 files changed, 24 insertions, 40 deletions
diff --git a/.gitignore b/.gitignore
index 74d1578..3a22b7f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
-# backup files
-*~
+# db files
+*.db
+*.db~
# compiled files
*.out
diff --git a/src/lib/test/test.c b/src/lib/test/test.c
deleted file mode 100644
index 19397be..0000000
--- a/src/lib/test/test.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-
-#include "../mdb.h"
-
-int main(void)
-{
- char *filename = "test.db";
- struct keytablist *list = readdb(filename);
- if (list == NULL)
- exit(1);
-
- writedb(filename, list);
- 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);
- }
- free(indexes);
- }
-
- free(list);
- exit(0);
-}
diff --git a/src/lib/test/test.db b/src/lib/test/test.db
deleted file mode 100644
index 0b5ef69..0000000
--- a/src/lib/test/test.db
+++ /dev/null
@@ -1 +0,0 @@
-ûúRow_1:1234.00üúRow_2:testüúRow_3:trueüþûúRow_1:trueüþûúRow_1:testüþ \ No newline at end of file
diff --git a/src/main.c b/src/main.c
index d2f7228..921eacd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -7,6 +7,7 @@
int getrange(char *selector);
void printkeys(struct keytablist *list, int id, char **keys, int klen);
+void setkeys(struct keytablist **list, int id, char **pairs, int plen);
int main(int argc, char **argv)
{
@@ -32,6 +33,12 @@ int main(int argc, char **argv)
}
break;
case SET:
+ if (range >= 0)
+ setkeys(&list, range, evaled.params, evaled.plen);
+ else if (range == -1) {
+ for (int i = 0; i < list[0].len; ++i)
+ setkeys(&list, i, evaled.params, evaled.plen);
+ }
break;
case DEL:
break;
@@ -60,6 +67,8 @@ int main(int argc, char **argv)
}
int getrange(char *selector) {
+ if (selector == NULL)
+ return -3;
int id;
if (!strcmp(selector, "*"))
return -1;
@@ -112,3 +121,15 @@ void printkeys(struct keytablist *list, int id, char **keys, int klen)
printf("}\n");
}
}
+
+void setkeys(struct keytablist **list, int id, char **pairs, int plen)
+{
+ if (pairs == NULL)
+ return;
+ for (int i = 0; i < plen; ++i) {
+ char *tmp = calloc(strlen(pairs[i]) + 1, sizeof(char));
+ strcpy(tmp, pairs[i]);
+ setkey(list, &(list[0]->len), id, tmp);
+ free(tmp);
+ }
+}