aboutsummaryrefslogtreecommitdiffstats
path: root/src/directory.c
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-10-07 02:01:21 -0700
committerEric Wong <normalperson@yhbt.net>2008-10-07 02:01:21 -0700
commitd271b5f13090595b67de6f2161dc309bb43e6fbe (patch)
tree4fea995baf9ebddf413fa5e5f5fd46fbd4501263 /src/directory.c
parent4602f4fd6e22c7ed7195d71b681214f3a9a53b02 (diff)
downloadmpd-d271b5f13090595b67de6f2161dc309bb43e6fbe.tar.gz
mpd-d271b5f13090595b67de6f2161dc309bb43e6fbe.tar.xz
mpd-d271b5f13090595b67de6f2161dc309bb43e6fbe.zip
dbUtils/directory: traverseAllIn forEachSong returns -1 on error
Being consistent with most UNIX functions...
Diffstat (limited to '')
-rw-r--r--src/directory.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/directory.c b/src/directory.c
index 57a615cbd..04523ceea 100644
--- a/src/directory.c
+++ b/src/directory.c
@@ -960,14 +960,11 @@ static int traverseAllInSubDirectory(Directory * directory,
void *data)
{
struct dirvec *dv = &directory->children;
- int errFlag = 0;
+ int err = 0;
size_t j;
- if (forEachDir) {
- errFlag = forEachDir(directory, data);
- if (errFlag)
- return errFlag;
- }
+ if (forEachDir && (err = forEachDir(directory, data)) < 0)
+ return err;
if (forEachSong) {
int i;
@@ -976,16 +973,16 @@ static int traverseAllInSubDirectory(Directory * directory,
for (i = sv->nr; --i >= 0; ) {
Song *song = *sp++;
- if ((errFlag = forEachSong(song, data)))
- return errFlag;
+ if ((err = forEachSong(song, data)) < 0)
+ return err;
}
}
- for (j = 0; !errFlag && j < dv->nr; ++j)
- errFlag = traverseAllInSubDirectory(dv->base[j], forEachSong,
- forEachDir, data);
+ for (j = 0; err >= 0 && j < dv->nr; ++j)
+ err = traverseAllInSubDirectory(dv->base[j], forEachSong,
+ forEachDir, data);
- return errFlag;
+ return err;
}
int traverseAllIn(const char *name,