From ef6be9db1e7eee0c5ca7bed844a4c8b9d10f25a2 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 11 Feb 2003 21:56:38 +0000 Subject: Merge from HEAD: Patch by Anthony Liguori to replace scandir() with portable readdir() calls. Andrew Bartlett (This used to be commit b9ca0b9ef39442726afd580dc38b6dafce542335) --- source3/modules/vfs_netatalk.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'source3/modules/vfs_netatalk.c') diff --git a/source3/modules/vfs_netatalk.c b/source3/modules/vfs_netatalk.c index c869922a4c..b69a900e14 100644 --- a/source3/modules/vfs_netatalk.c +++ b/source3/modules/vfs_netatalk.c @@ -161,27 +161,26 @@ static void atalk_add_to_list(name_compare_entry **list) static void atalk_rrmdir(TALLOC_CTX *ctx, char *path) { - int n; char *dpath; - struct dirent **namelist; + struct dirent *dent = 0; + DIR *dir; if (!path) return; - n = scandir(path, &namelist, 0, alphasort); - if (n < 0) { - return; - } else { - while (n --) { - if (strcmp(namelist[n]->d_name, ".") == 0 || - strcmp(namelist[n]->d_name, "..") == 0) - continue; - if (!(dpath = talloc_asprintf(ctx, "%s/%s", - path, namelist[n]->d_name))) - continue; - atalk_unlink_file(dpath); - free(namelist[n]); - } + dir = opendir(path); + if (!dir) return; + + while (NULL != (dent = readdir(dir))) { + if (strcmp(dent->d_name, ".") == 0 || + strcmp(dent->d_name, "..") == 0) + continue; + if (!(dpath = talloc_asprintf(ctx, "%s/%s", + path, dent->d_name))) + continue; + atalk_unlink_file(dpath); } + + closedir(dir); } /* Disk operations */ -- cgit