aboutsummaryrefslogtreecommitdiffstats
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
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...
-rw-r--r--src/dbUtils.c15
-rw-r--r--src/directory.c21
2 files changed, 14 insertions, 22 deletions
diff --git a/src/dbUtils.c b/src/dbUtils.c
index ff5f1883e..a9d83eb41 100644
--- a/src/dbUtils.c
+++ b/src/dbUtils.c
@@ -82,7 +82,8 @@ static int searchInDirectory(Song * song, void *_data)
LocateTagItemArray *array = &data->array;
if (strstrSearchTags(song, array->numItems, array->items))
- song_print_info(song, fd);
+ if (song_print_info(song, fd) < 0)
+ return -1;
return 0;
}
@@ -124,7 +125,8 @@ static int findInDirectory(Song * song, void *_data)
LocateTagItemArray *array = &data->array;
if (tagItemsFoundAndMatches(song, array->numItems, array->items))
- song_print_info(song, fd);
+ if (song_print_info(song, fd) < 0)
+ return -1;
return 0;
}
@@ -217,13 +219,6 @@ int addAllInToStoredPlaylist(const char *name, const char *utf8file)
&data);
}
-static int directoryPrintSongInfo(Song * song, void *data)
-{
- song_print_info(song, (int)(size_t)data);
-
- return 0;
-}
-
static int sumSongTime(Song * song, void *data)
{
unsigned long *sum_time = (unsigned long *)data;
@@ -236,7 +231,7 @@ static int sumSongTime(Song * song, void *data)
int printInfoForAllIn(int fd, const char *name)
{
- return traverseAllIn(name, directoryPrintSongInfo,
+ return traverseAllIn(name, song_print_info_x,
printDirectoryInDirectory, (void*)(size_t)fd);
}
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,