aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-07-27 18:37:46 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-07-27 18:37:46 +0530
commitfc6632146b0d46e63e5e14b74a311ef991f7fb61 (patch)
treed326aa70cbf4b1c60869ccc919ff91ad020d0315
parent119012f284233587f6622669da2b76da7fd073e2 (diff)
filehandler: implement enumfilesindir()
-rw-r--r--include/filehandler.h2
-rw-r--r--src/filehandler.c26
2 files changed, 28 insertions, 0 deletions
diff --git a/include/filehandler.h b/include/filehandler.h
index 8868af7..75f04bd 100644
--- a/include/filehandler.h
+++ b/include/filehandler.h
@@ -1,9 +1,11 @@
#ifndef __FILEHANDLER_H
#define __FILEHANDLER_H
+#include <list.h>
#include <stdio.h>
char *fcontent(FILE *f, unsigned int size);
unsigned int fsize(FILE *f);
+list_t *enumfilesindir(char *path);
#endif
diff --git a/src/filehandler.c b/src/filehandler.c
index 154e2f3..fb1cedb 100644
--- a/src/filehandler.c
+++ b/src/filehandler.c
@@ -1,6 +1,12 @@
+#define _GNU_SOURCE
+
+#include <dirent.h>
#include <filehandler.h>
+#include <list.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
+#include <util.h>
char *
fcontent(FILE *f, unsigned int size)
@@ -26,3 +32,23 @@ fsize(FILE *f)
return s + 1;
}
+
+list_t *
+enumfilesindir(char *path)
+{
+ DIR *d;
+ struct dirent *dir;
+
+ d = opendir(path);
+ if (!d)
+ return NULL;
+
+ list_t *l = list_create(sizeof(ptr_wrapper_t *));
+
+ while ((dir = readdir(d)) != NULL)
+ if (dir->d_type == DT_REG)
+ list_add(l, wrap_ptr(strdup(dir->d_name)));
+
+ closedir(d);
+ return l;
+}