dbUtils/directory: traverseAllIn forEachSong returns -1 on error

Being consistent with most UNIX functions...
This commit is contained in:
Eric Wong
2008-10-07 22:07:44 +02:00
committed by Max Kellermann
parent 45334a23e1
commit 8be6026336
2 changed files with 11 additions and 14 deletions

View File

@@ -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)
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;
} }

View File

@@ -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,
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,