file writer: Use xwrite() instead of plain write().
[paraslash.git] / playlist.c
index 171ebab59938b79b0f18c61e60fdb40b9390b680..60e27e6e6fc104034b13e054c330c4ce484749a6 100644 (file)
@@ -1,15 +1,19 @@
 /*
- * Copyright (C) 2007-2008 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2007-2013 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
 
+#include <regex.h>
+#include <osl.h>
+
 #include "para.h"
 #include "error.h"
 #include "string.h"
 #include "afh.h"
 #include "afs.h"
 #include "ipc.h"
+#include "sideband.h"
 
 /** \file playlist.c Functions for loading and saving playlists. */
 
@@ -128,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");
 
@@ -139,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);
 }
 
@@ -174,7 +181,7 @@ int playlist_open(char *name)
 
        obj.data = name;
        obj.size = strlen(obj.data);
-       ret = osl_get_row(playlists_table, BLOBCOL_NAME, &obj, &row);
+       ret = osl(osl_get_row(playlists_table, BLOBCOL_NAME, &obj, &row));
        if (ret < 0) {
                PARA_NOTICE_LOG("failed to load playlist %s\n", name);
                return ret;