]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - audiod.c
s_a_r_list(): return NULL on errors
[paraslash.git] / audiod.c
index ede35ab02e6ac97738fcaae3659929a49dc82287..22371f45f7ff18f8fcd6eb8474729586c4b26fbe 100644 (file)
--- a/audiod.c
+++ b/audiod.c
@@ -448,6 +448,17 @@ static void kill_stream_writer(int slot_num)
        s->fci->error = 1;
 }
 
+static void set_restart_barrier(int format, struct timeval *now)
+{
+       struct timeval tmp;
+
+       if (now)
+               tmp = *now;
+       else
+               gettimeofday(&tmp, NULL);
+       tv_add(&tmp, &restart_delay, &afi[format].restart_barrier);
+}
+
 static void close_receiver(int slot_num)
 {
        struct slot_info *s = &slot[slot_num];
@@ -462,8 +473,7 @@ static void close_receiver(int slot_num)
        a->receiver->close(s->receiver_node);
        free(s->receiver_node);
        s->receiver_node = NULL;
-       gettimeofday(&now, NULL);
-       tv_add(&now, &restart_delay, &a->restart_barrier); /* FIXME: Use set_restart_barrier() */
+       set_restart_barrier(s->format, NULL);
 }
 
 static void kill_all_decoders(void)
@@ -477,17 +487,6 @@ static void kill_all_decoders(void)
                }
 }
 
-static void set_restart_barrier(int format, struct timeval *now)
-{
-       struct timeval tmp;
-
-       if (now)
-               tmp = *now;
-       else
-               gettimeofday(&tmp, NULL);
-       tv_add(&tmp, &restart_delay, &afi[format].restart_barrier);
-}
-
 static void check_sigchld(void)
 {
        pid_t pid;
@@ -569,7 +568,7 @@ static void close_stat_pipe(void)
        stat_pipe = -1;
        kill_all_decoders();
        for (i = 0; i < RINGBUFFER_SIZE; i++)
-               ringbuffer_add(stat_item_ringbuf, para_strdup(NULL));
+               free(ringbuffer_add(stat_item_ringbuf, para_strdup(NULL)));
        dump_empty_status();
        length_seconds = 0;
        offset_seconds = 0;
@@ -577,9 +576,8 @@ static void close_stat_pipe(void)
        playing = 0;
        msg = make_message("%s:no connection to para_server\n",
                status_item_list[SI_STATUS_BAR]);
-       ringbuffer_add(stat_item_ringbuf, msg);
+       free(ringbuffer_add(stat_item_ringbuf, msg));
        stat_client_write(msg);
-       free(msg);
 }
 
 static void __noreturn clean_exit(int status, const char *msg)
@@ -806,7 +804,7 @@ static void check_stat_line(char *line)
 
        if (!line)
                return;
-       ringbuffer_add(stat_item_ringbuf, line);
+       free(ringbuffer_add(stat_item_ringbuf, para_strdup(line)));
        stat_client_write(line);
        itemnum = stat_line_valid(line);
        if (itemnum < 0)
@@ -987,16 +985,16 @@ static int write_audio_data(int slot_num)
                buf = &rn->buf;
                len = &rn->loaded;
        }
-       PARA_DEBUG_LOG("writing %p (%d bytes)\n", *buf, *len);
+       PARA_DEBUG_LOG("writing %p (%zd bytes)\n", *buf, *len);
        rv = write(s->write_fd, *buf, *len);
-       PARA_DEBUG_LOG("wrote %d/%d\n", rv, *len);
+       PARA_DEBUG_LOG("wrote %d/%zd\n", rv, *len);
        if (rv < 0) {
                PARA_WARNING_LOG("write error in slot %d (fd %d): %s\n",
                        slot_num, s->write_fd, strerror(errno));
                *len = 0;
                s->fci->error = E_WRITE_AUDIO_DATA;
        } else if (rv != *len) {
-               PARA_DEBUG_LOG("partial %s write (%i/%i) for slot %d\n",
+               PARA_DEBUG_LOG("partial %s write (%i/%zd) for slot %d\n",
                        audio_formats[s->format], rv, *len, slot_num);
                *len -= rv;
                memmove(*buf, *buf + rv, *len);