diff options
author | Andrew Bartlett <abartlet@samba.org> | 2003-02-11 21:54:36 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2003-02-11 21:54:36 +0000 |
commit | 2d220ef00d1f2bae676a4201fb483a5ee3d0ae15 (patch) | |
tree | cd55bed44cf3dfca904de5df13bc7aebe371a51f /source3 | |
parent | 270631338d57961aa60e0d6519089fc4bbaaba88 (diff) | |
download | samba-2d220ef00d1f2bae676a4201fb483a5ee3d0ae15.tar.gz samba-2d220ef00d1f2bae676a4201fb483a5ee3d0ae15.tar.bz2 samba-2d220ef00d1f2bae676a4201fb483a5ee3d0ae15.zip |
Patch from Anthony Liguori <aliguor@us.ibm.com> to remove scandir() portability
madness.
Andrew Bartlett
(This used to be commit 7836b9a58d158a54a7326b3de5d2fa757a9bb5b6)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/modules/vfs_netatalk.c | 31 |
1 files changed, 15 insertions, 16 deletions
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 */ |