aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-10-07 22:10:42 +0200
committerMax Kellermann <max@duempel.org>2008-10-07 22:10:42 +0200
commitc47f97e1dc6a37459f90daf78a35c1751ea090e3 (patch)
tree099a0f87789f4b690b43d1b5fb6f4e3c086f4cd0 /src
parentf0366cc8ca8c42063d18196fca757017a4390f88 (diff)
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.
Diffstat (limited to 'src')
-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 3b427547..647e6d59 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 4c40a262..c29ee86a 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);
}