Merge branch 'maint'
[paraslash.git] / playlist.c
index 852ffd7a9724471798a6f6a376a2826c0f6961f5..c822e0802c53fdfbb72b5d728e0ca84aabbedc45 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2013 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -13,6 +13,7 @@
 #include "afh.h"
 #include "afs.h"
 #include "ipc.h"
+#include "sideband.h"
 
 /** \file playlist.c Functions for loading and saving playlists. */
 
@@ -69,8 +70,8 @@ static int load_playlist(struct osl_row *row, void *data)
        if (ret < 0)
                goto err;
        playlist->length = 0;
-       ret = for_each_line_ro(playlist_def.data, playlist_def.size,
-               add_playlist_entry, playlist);
+       ret = for_each_line(FELF_READ_ONLY, playlist_def.data,
+               playlist_def.size, add_playlist_entry, playlist);
        osl_close_disk_object(&playlist_def);
        if (ret < 0)
                goto err;
@@ -113,8 +114,8 @@ static int check_playlist(struct osl_row *row, void *data)
                ret = para_printf(pb, "checking playlist %s...\n", playlist_name);
                if (ret < 0)
                        return ret;
-               ret = for_each_line_ro(playlist_def.data, playlist_def.size,
-                       check_playlist_path, pb);
+               ret = for_each_line(FELF_READ_ONLY, playlist_def.data,
+                       playlist_def.size, check_playlist_path, pb);
        }
        osl_close_disk_object(&playlist_def);
        return ret;
@@ -131,9 +132,12 @@ static int check_playlist(struct osl_row *row, void *data)
 void playlist_check_callback(int fd, __a_unused const struct osl_object *query)
 {
        struct para_buffer pb = {
-               .max_size = SHMMAX,
-               .private_data = &fd,
-               .max_size_handler = pass_buffer_as_shm
+               .max_size = shm_get_shmmax(),
+               .private_data = &(struct afs_max_size_handler_data) {
+                       .fd = fd,
+                       .band = SBD_OUTPUT
+               },
+               .max_size_handler = afs_max_size_handler,
        };
        int ret = para_printf(&pb, "checking playlists...\n");
 
@@ -142,7 +146,7 @@ void playlist_check_callback(int fd, __a_unused const struct osl_object *query)
        osl_rbtree_loop(playlists_table, BLOBCOL_ID, &pb,
                check_playlist);
        if (pb.offset)
-               pass_buffer_as_shm(pb.buf, pb.offset, &fd);
+               pass_buffer_as_shm(fd, SBD_OUTPUT, pb.buf, pb.offset);
        free(pb.buf);
 }
 
@@ -215,8 +219,8 @@ static int handle_audio_file_event(enum afs_events event, void *data)
        ret = pl_get_def_by_name(current_playlist.name, &playlist_def);
        if (ret < 0)
                return ret;
-       ret = for_each_line_ro(playlist_def.data, playlist_def.size,
-               search_path, new_path);
+       ret = for_each_line(FELF_READ_ONLY, playlist_def.data,
+               playlist_def.size, search_path, new_path);
        osl_close_disk_object(&playlist_def);
        is_admissible = (ret < 0);
        if (was_admissible && is_admissible)