Get rid of mmd->afi.
[paraslash.git] / vss.c
diff --git a/vss.c b/vss.c
index 0bc2aed48ab3a01e0224946ff689c0268c976a2c..e456f67a92bb0fe88bf2b7abdab4e3a55eceb037 100644 (file)
--- a/vss.c
+++ b/vss.c
@@ -24,7 +24,6 @@
 #include "server.h"
 #include "net.h"
 #include "server.cmdline.h"
-#include "afs_common.h"
 #include "vss.h"
 #include "send.h"
 #include "ipc.h"
@@ -40,7 +39,6 @@ static struct timeval autoplay_barrier;
 extern struct misc_meta_data *mmd;
 extern struct sender senders[];
 
-static int audio_file;
 static char *map;
 
 /**
@@ -138,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);
 }
 
@@ -191,23 +189,18 @@ 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;
-       close(audio_file);
        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;
@@ -226,10 +219,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 (mmd->audio_format < 0 || !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;
 }
 
 /**
@@ -254,7 +247,7 @@ struct timeval *vss_chunk_time(void)
 {
        if (mmd->audio_format < 0)
                return NULL;
-       return &mmd->afi.chunk_tv;
+       return &mmd->afd.afhi.chunk_tv;
 }
 
 enum afs_socket_status {
@@ -304,7 +297,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)
@@ -390,6 +383,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;
        }
@@ -397,15 +391,15 @@ static void recv_afs_result(void)
        mmd->mtime = statbuf.st_mtime;
        map = para_mmap(mmd->size, PROT_READ, MAP_PRIVATE,
                passed_fd, 0);
+       close(passed_fd);
        strcpy(mmd->filename, mmd->afd.path); /* FIXME: check length */
-       mmd->afi.header_len = 0; /* default: no header */
+       mmd->afd.afhi.header_len = 0; /* default: no header */
        mmd->audio_format = mmd->afd.afsi.audio_format_id;
        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);
@@ -431,9 +425,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,
@@ -453,7 +447,7 @@ int vss_get_chunk(long unsigned chunk_num, char **buf, size_t *len)
 {
        if (mmd->audio_format < 0 || !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;
@@ -487,7 +481,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();
        }
@@ -498,7 +492,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++;
        }