Everywhere this function is used, we expect that a return value of 1 means "include the entry" and 0 means "omit it". However, that's not how get_file_list behaves. So fix it to do so, and then document the behavior. --- loader/dirbrowser.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/loader/dirbrowser.c b/loader/dirbrowser.c index ba0a6e8..18d6cdb 100644 --- a/loader/dirbrowser.c +++ b/loader/dirbrowser.c @@ -53,6 +53,13 @@ static int simpleStringCmp(const void * a, const void * b) {
#define FSTEP 10
+/* Return a list of the contents of a directory, non-recursively. + * + * dirname -- The directory to list. + * filterfunc -- An optional function to use for filtering out the results. + * If this function returns 1, the directory is included. + * Otherwise, it is omitted. + */ char ** get_file_list(char * dirname, filterfunc_t filterfunc) { DIR * dir; struct dirent *entry; @@ -72,7 +79,7 @@ char ** get_file_list(char * dirname, filterfunc_t filterfunc) { continue; if ((strlen(entry->d_name) == 2) && !strncmp(entry->d_name, "..", 2)) continue; - if (filterfunc && filterfunc(dirname, entry)) + if (filterfunc && !filterfunc(dirname, entry)) continue;
files[i] = strdup(entry->d_name);
On Tue, Mar 29, 2011 at 03:31:29PM -0400, Chris Lumens wrote:
Everywhere this function is used, we expect that a return value of 1 means "include the entry" and 0 means "omit it". However, that's not how get_file_list behaves. So fix it to do so, and then document the behavior.
Ack.
anaconda-devel@lists.fedoraproject.org