aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/song_print.c16
-rw-r--r--src/song_save.c23
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);
}