song: use songvec_for_each() in songvec_print() / songvec_save()

songvec_for_each() has locking, use it instead of manually iterating
over the songvec items.
This commit is contained in:
Max Kellermann 2008-10-07 22:10:42 +02:00
parent f0366cc8ca
commit c47f97e1dc
2 changed files with 19 additions and 20 deletions

View File

@ -42,14 +42,14 @@ int song_print_info(struct client *client, Song * song)
return 0;
}
static int
song_print_info_x(Song *song, void *data)
{
struct client *client = data;
return song_print_info(client, song);
}
int songvec_print(struct client *client, const struct songvec *sv)
{
int i;
Song **sp = sv->base;
for (i = sv->nr; --i >= 0;)
if (song_print_info(client, *sp++) < 0)
return -1;
return 0;
return songvec_for_each(sv, song_print_info_x, client);
}

View File

@ -37,28 +37,27 @@ static void song_save_url(FILE *fp, Song * song)
song->url);
}
static void song_save(FILE *fp, Song * song)
static int
song_save(Song *song, void *data)
{
FILE *fp = data;
fprintf(fp, SONG_KEY "%s\n", song->url);
song_save_url(fp, song);
if (song->tag != NULL)
tag_save(fp, song->tag);
fprintf(fp, SONG_MTIME "%li\n", (long)song->mtime);
return 0;
}
void songvec_save(FILE *fp, struct songvec *sv)
{
int i;
Song **sp = sv->base;
fprintf(fp, "%s\n", SONG_BEGIN);
for (i = sv->nr; --i >= 0; ) {
Song *song = *sp++;
fprintf(fp, "%s%s\n", SONG_KEY, song->url);
song_save(fp, song);
fprintf(fp, "%s%li\n", SONG_MTIME, (long)song->mtime);
}
songvec_for_each(sv, song_save, fp);
fprintf(fp, "%s\n", SONG_END);
}