Commit 8be60263 authored by Eric Wong's avatar Eric Wong Committed by Max Kellermann

dbUtils/directory: traverseAllIn forEachSong returns -1 on error

Being consistent with most UNIX functions...
parent 45334a23
...@@ -83,7 +83,7 @@ static int searchInDirectory(Song * song, void *_data) ...@@ -83,7 +83,7 @@ static int searchInDirectory(Song * song, void *_data)
LocateTagItemArray *array = &data->array; LocateTagItemArray *array = &data->array;
if (strstrSearchTags(song, array->numItems, array->items)) if (strstrSearchTags(song, array->numItems, array->items))
song_print_info(data->client, song); return song_print_info(data->client, song);
return 0; return 0;
} }
...@@ -124,7 +124,7 @@ static int findInDirectory(Song * song, void *_data) ...@@ -124,7 +124,7 @@ static int findInDirectory(Song * song, void *_data)
LocateTagItemArray *array = &data->array; LocateTagItemArray *array = &data->array;
if (tagItemsFoundAndMatches(song, array->numItems, array->items)) if (tagItemsFoundAndMatches(song, array->numItems, array->items))
song_print_info(data->client, song); return song_print_info(data->client, song);
return 0; return 0;
} }
......
...@@ -974,14 +974,11 @@ static int traverseAllInSubDirectory(Directory * directory, ...@@ -974,14 +974,11 @@ static int traverseAllInSubDirectory(Directory * directory,
void *data) void *data)
{ {
struct dirvec *dv = &directory->children; struct dirvec *dv = &directory->children;
int errFlag = 0; int err = 0;
size_t j; size_t j;
if (forEachDir) { if (forEachDir && (err = forEachDir(directory, data)) < 0)
errFlag = forEachDir(directory, data); return err;
if (errFlag)
return errFlag;
}
if (forEachSong) { if (forEachSong) {
int i; int i;
...@@ -990,16 +987,16 @@ static int traverseAllInSubDirectory(Directory * directory, ...@@ -990,16 +987,16 @@ static int traverseAllInSubDirectory(Directory * directory,
for (i = sv->nr; --i >= 0; ) { for (i = sv->nr; --i >= 0; ) {
Song *song = *sp++; Song *song = *sp++;
if ((errFlag = forEachSong(song, data))) if ((err = forEachSong(song, data)) < 0)
return errFlag; return err;
} }
} }
for (j = 0; !errFlag && j < dv->nr; ++j) for (j = 0; err >= 0 && j < dv->nr; ++j)
errFlag = traverseAllInSubDirectory(dv->base[j], forEachSong, err = traverseAllInSubDirectory(dv->base[j], forEachSong,
forEachDir, data); forEachDir, data);
return errFlag; return err;
} }
int traverseAllIn(const char *name, int traverseAllIn(const char *name,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment