From 9d3c8770ec63fe3e02f82bdc244e63d701492322 Mon Sep 17 00:00:00 2001 From: "@syxhe" Date: Tue, 15 Apr 2025 18:50:57 -0500 Subject: Create scanner.c/h files --- src/scanner.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/scanner.c (limited to 'src/scanner.c') diff --git a/src/scanner.c b/src/scanner.c new file mode 100644 index 0000000..7c65df4 --- /dev/null +++ b/src/scanner.c @@ -0,0 +1,30 @@ +#include "shared.h" +#define _GNU_SOURCE + +#include "ll.h" +#include "scanner.h" + +#include +#include +#include +#include +#include + +dlinkedlist * scandirlist(const char * const dir, int (*selector)(const struct dirent *), int (*cmp)(const struct dirent **, const struct dirent **)) { + struct dirent **namelist = NULL; + dlinkedlist *list = NULL; + int numentries = -1; + + if((numentries = scandir(dir, &namelist, selector, cmp)) < 0) + RETURNWERR(errno, NULL); + + list = dlinkedlist_init(); + for(int i = 0; i < numentries; i++) + if(dlinkedlist_append(list, (void *)(namelist[i]), free) < 0) { + dlinkedlist_free(list); + RETURNWERR(errno, NULL); + } + free(namelist); + + return list; +} -- cgit v1.2.3