Replace status item DBINFO3 by DIRECTORY.
[paraslash.git] / vss.c
diff --git a/vss.c b/vss.c
index 0bef15d0135c9d34cd92ce13479e405c4c59e388..27520ded29a8a4c8c330269c9f0b9b9a775844f9 100644 (file)
--- a/vss.c
+++ b/vss.c
@@ -136,7 +136,7 @@ static void vss_next_chunk_time(struct timeval *due)
 {
        struct timeval tmp;
 
-       tv_scale(mmd->chunks_sent, &mmd->afi.chunk_tv, &tmp);
+       tv_scale(mmd->chunks_sent, &mmd->afd.afhi.chunk_tv, &tmp);
        tv_add(&tmp, &mmd->stream_start, due);
 }
 
@@ -149,7 +149,7 @@ static struct timeval *vss_compute_timeout(void)
        static struct timeval the_timeout;
        struct timeval now, next_chunk;
 
-       if (vss_next() && mmd->audio_format >= 0) {
+       if (vss_next() && map) {
                /* only sleep a bit, nec*/
                the_timeout.tv_sec = 0;
                the_timeout.tv_usec = 100;
@@ -164,11 +164,11 @@ static struct timeval *vss_compute_timeout(void)
        if (chk_barrier("data send", &now, &data_send_barrier,
                        &the_timeout, 1) < 0)
                return &the_timeout;
-       if (mmd->audio_format < 0 || !vss_playing() || !map)
+       if (!vss_playing() || !map)
                return NULL;
        vss_next_chunk_time(&next_chunk);
-       if (chk_barrier(audio_format_name(mmd->audio_format), &now, &next_chunk,
-                       &the_timeout, 0) < 0)
+       if (chk_barrier(audio_format_name(mmd->afd.afsi.audio_format_id),
+                       &now, &next_chunk, &the_timeout, 0) < 0)
                return &the_timeout;
        /* chunk is due or bof */
        the_timeout.tv_sec = 0;
@@ -189,22 +189,17 @@ static void vss_eof(void)
                return;
        }
        gettimeofday(&now, NULL);
-       tv_add(&mmd->afi.eof_tv, &now, &eof_barrier);
+       tv_add(&mmd->afd.afhi.eof_tv, &now, &eof_barrier);
        munmap(map, mmd->size);
        map = NULL;
-       mmd->audio_format = -1;
        mmd->chunks_sent = 0;
        mmd->offset = 0;
-       mmd->afi.seconds_total = 0;
-       free(mmd->afi.chunk_table);
-       mmd->afi.chunk_table = NULL;
+       mmd->afd.afhi.seconds_total = 0;
+       free(mmd->afd.afhi.chunk_table);
+       mmd->afd.afhi.chunk_table = NULL;
        tmp  = make_message("%s:\n%s:\n%s:\n", status_item_list[SI_AUDIO_INFO1],
                status_item_list[SI_AUDIO_INFO2], status_item_list[SI_AUDIO_INFO3]);
-       strcpy(mmd->afi.info_string, tmp);
-       free(tmp);
-       tmp  = make_message("%s:\n%s:\n%s:\n", status_item_list[SI_DBINFO1],
-               status_item_list[SI_DBINFO2], status_item_list[SI_DBINFO3]);
-       strcpy(mmd->selector_info, tmp);
+       strcpy(mmd->afd.afhi.info_string, tmp);
        free(tmp);
        mmd->filename[0] = '\0';
        mmd->size = 0;
@@ -223,10 +218,10 @@ static void vss_eof(void)
  */
 char *vss_get_header(size_t *header_len)
 {
-       if (mmd->audio_format < 0 || !map || !mmd->afi.header_len)
+       if (!map || !mmd->afd.afhi.header_len)
                return NULL;
-       *header_len = mmd->afi.header_len;
-       return map + mmd->afi.header_offset;
+       *header_len = mmd->afd.afhi.header_len;
+       return map + mmd->afd.afhi.header_offset;
 }
 
 /**
@@ -249,9 +244,9 @@ const char *supported_audio_formats(void)
  */
 struct timeval *vss_chunk_time(void)
 {
-       if (mmd->audio_format < 0)
+       if (!map)
                return NULL;
-       return &mmd->afi.chunk_tv;
+       return &mmd->afd.afhi.chunk_tv;
 }
 
 enum afs_socket_status {
@@ -301,7 +296,7 @@ struct timeval *vss_preselect(fd_set *rfds, fd_set *wfds, int *max_fileno)
                        struct timeval now;
                        gettimeofday(&now, NULL);
                        if (!vss_paused() || mmd->chunks_sent)
-                               tv_add(&mmd->afi.eof_tv, &now, &eof_barrier);
+                               tv_add(&mmd->afd.afhi.eof_tv, &now, &eof_barrier);
                        if (vss_repos())
                                tv_add(&now, &announce_tv, &data_send_barrier);
                        if (mmd->new_vss_status_flags & VSS_NOMORE)
@@ -387,6 +382,7 @@ static void recv_afs_result(void)
                mmd->afd.afhi.chunks_total);
        ret = fstat(passed_fd, &statbuf);
        if (ret < 0) {
+               PARA_ERROR_LOG("fstat error:\n");
                ret = -ERRNO_TO_PARA_ERROR(errno);
                goto err;
        }
@@ -396,14 +392,12 @@ static void recv_afs_result(void)
                passed_fd, 0);
        close(passed_fd);
        strcpy(mmd->filename, mmd->afd.path); /* FIXME: check length */
-       mmd->afi.header_len = 0; /* default: no header */
-       mmd->audio_format = mmd->afd.afsi.audio_format_id;
+       mmd->afd.afhi.header_len = 0; /* default: no header */
        mmd->chunks_sent = 0;
        mmd->current_chunk = 0;
        mmd->offset = 0;
        mmd->events++;
        mmd->num_played++;
-       mmd->afi = mmd->afd.afhi;
        mmd->new_vss_status_flags &= (~VSS_NEXT);
        gettimeofday(&now, NULL);
        tv_add(&now, &announce_tv, &data_send_barrier);
@@ -429,9 +423,9 @@ void vss_post_select(fd_set *rfds, fd_set *wfds)
 
 static void get_chunk(long unsigned chunk_num, char **buf, size_t *len)
 {
-       size_t pos = mmd->afi.chunk_table[chunk_num];
+       size_t pos = mmd->afd.afhi.chunk_table[chunk_num];
        *buf = map + pos;
-       *len = mmd->afi.chunk_table[chunk_num + 1] - pos;
+       *len = mmd->afd.afhi.chunk_table[chunk_num + 1] - pos;
 
        if (chunk_num + 5 > mmd->afd.afhi.chunks_total)
                PARA_NOTICE_LOG("chunk %lu/%lu\n, len: %zu\n", chunk_num,
@@ -449,9 +443,9 @@ static void get_chunk(long unsigned chunk_num, char **buf, size_t *len)
  */
 int vss_get_chunk(long unsigned chunk_num, char **buf, size_t *len)
 {
-       if (mmd->audio_format < 0 || !map || !vss_playing())
+       if (!map || !vss_playing())
                return -E_CHUNK;
-       if (chunk_num >= mmd->afi.chunks_total)
+       if (chunk_num >= mmd->afd.afhi.chunks_total)
                return -E_CHUNK;
        get_chunk(chunk_num, buf, len);
        return 1;
@@ -473,7 +467,7 @@ void vss_send_chunk(void)
        char *buf;
        size_t len;
 
-       if (mmd->audio_format < 0 || !map || !vss_playing())
+       if (!map || !vss_playing())
                return;
        gettimeofday(&now, NULL);
        vss_next_chunk_time(&due);
@@ -485,7 +479,7 @@ void vss_send_chunk(void)
                        &due, 1) < 0)
                return;
        mmd->new_vss_status_flags &= ~VSS_REPOS;
-       if (mmd->current_chunk >= mmd->afi.chunks_total) { /* eof */
+       if (mmd->current_chunk >= mmd->afd.afhi.chunks_total) { /* eof */
                mmd->new_vss_status_flags |= VSS_NEXT;
                return vss_eof();
        }
@@ -496,7 +490,7 @@ void vss_send_chunk(void)
        if (!mmd->chunks_sent) {
                struct timeval tmp;
                gettimeofday(&mmd->stream_start, NULL);
-               tv_scale(mmd->current_chunk, &mmd->afi.chunk_tv, &tmp);
+               tv_scale(mmd->current_chunk, &mmd->afd.afhi.chunk_tv, &tmp);
                mmd->offset = tv2ms(&tmp);
                mmd->events++;
        }