diff options
-rw-r--r-- | src/song_print.c | 16 | ||||
-rw-r--r-- | src/song_save.c | 23 |
2 files changed, 19 insertions, 20 deletions
diff --git a/src/song_print.c b/src/song_print.c index 3b4275472..647e6d594 100644 --- a/src/song_print.c +++ b/src/song_print.c @@ -42,14 +42,14 @@ int song_print_info(struct client *client, Song * song) return 0; } -int songvec_print(struct client *client, const struct songvec *sv) +static int +song_print_info_x(Song *song, void *data) { - int i; - Song **sp = sv->base; - - for (i = sv->nr; --i >= 0;) - if (song_print_info(client, *sp++) < 0) - return -1; + struct client *client = data; + return song_print_info(client, song); +} - return 0; +int songvec_print(struct client *client, const struct songvec *sv) +{ + return songvec_for_each(sv, song_print_info_x, client); } diff --git a/src/song_save.c b/src/song_save.c index 4c40a262c..c29ee86a8 100644 --- a/src/song_save.c +++ b/src/song_save.c @@ -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); } |