aboutsummaryrefslogtreecommitdiff
path: root/src/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/file.c')
-rw-r--r--src/file.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/file.c b/src/file.c
index e69de29..df6c978 100644
--- a/src/file.c
+++ b/src/file.c
@@ -0,0 +1,40 @@
+#include "file.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+
+int magi_file_list_add(struct magi_file_list ** list, struct magi_file * item)
+{
+ struct magi_file_list * node = malloc(sizeof(*node));
+ if (node) {
+ node->next = *list;
+ node->item = *item;
+ *list = node;
+ }
+ return node;
+}
+
+struct magi_file * magi_file_list_get(struct magi_file_list * list,
+ const char * name)
+{
+ if (!list || !name) {
+ return 0;
+ } else if (!strcmp(list->item.param_name, name)) {
+ return &list->item;
+ } else {
+ return magi_file_list_get(list->next, name);
+ }
+}
+
+void magi_file_list_destroy(struct magi_file_list * list)
+{
+ if (list) {
+ magi_file_list_destroy(list->next);
+ free(list->next);
+ free(list->item.param_name);
+ free(list->item.file_name);
+ magi_param_list_destroy(list->item.params);
+ free(list->item.params);
+ }
+}