diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-27 18:37:46 +0530 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-27 18:37:46 +0530 |
commit | fc6632146b0d46e63e5e14b74a311ef991f7fb61 (patch) | |
tree | d326aa70cbf4b1c60869ccc919ff91ad020d0315 | |
parent | 119012f284233587f6622669da2b76da7fd073e2 (diff) |
filehandler: implement enumfilesindir()
-rw-r--r-- | include/filehandler.h | 2 | ||||
-rw-r--r-- | src/filehandler.c | 26 |
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; +} |