From 1229433782ff62943a778a8fdbf100bff6007493 Mon Sep 17 00:00:00 2001 From: Jann Horn Date: Tue, 10 Dec 2013 14:38:40 +0100 Subject: [PATCH 1/1] add FDIR_FOREACH (macro for iterating through directory entries) --- fs.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/fs.c b/fs.c index 3e31169..3ecdc69 100644 --- a/fs.c +++ b/fs.c @@ -29,3 +29,16 @@ PUBLIC_FN int dir_foreach(char *path, dir_iterator *iter, void *data) { errno = errno_; return feach_res; } + +HEADER // requires stdio.h +HEADER #define FDIR_FOREACH(dir, element_name, code) { \ +HEADER struct dirent element_name; \ +HEADER struct dirent *__jh_fdir_foreach_res; \ +HEADER while (1) { \ +HEADER int __jh_fdir_foreach_rd_res = readdir_r(dir, &element_name, &__jh_fdir_foreach_res); \ +HEADER if(__jh_fdir_foreach_rd_res) {*(char*)0 = 0; /*crash, boom – EBADF happened (probably)*/} \ +HEADER if (__jh_fdir_foreach_res == NULL) goto end; \ +HEADER {code} \ +HEADER } \ +HEADER end:; \ +HEADER } \ No newline at end of file -- 2.20.1