]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - aft.c
More documentation.
[paraslash.git] / aft.c
diff --git a/aft.c b/aft.c
index c99b5ac52dc5f336d85d6a311fd80b0cd2f3ad9f..f66310968c67458898bef9edb377a41e68458e97 100644 (file)
--- a/aft.c
+++ b/aft.c
@@ -325,10 +325,12 @@ enum afhi_offsets {
        AFHI_FREQUENCY_OFFSET = 8,
        /** Number of channels is stored here. */
        AFHI_CHANNELS_OFFSET = 12,
+       /** EOF timeout in ms. */
+       AFHI_EOF_OFFSET = 13,
        /** The tag info position. */
-       AFHI_INFO_STRING_OFFSET = 13,
+       AFHI_INFO_STRING_OFFSET = 15,
        /** Minimal on-disk size of a valid afhi struct. */
-       MIN_AFHI_SIZE = 14
+       MIN_AFHI_SIZE = 16
 };
 
 static unsigned sizeof_afhi_buf(const struct afh_info *afhi)
@@ -347,6 +349,7 @@ static void save_afhi(struct afh_info *afhi, char *buf)
        write_u32(buf + AFHI_BITRATE_OFFSET, afhi->bitrate);
        write_u32(buf + AFHI_FREQUENCY_OFFSET, afhi->frequency);
        write_u8(buf + AFHI_CHANNELS_OFFSET, afhi->channels);
+       write_u16(buf + AFHI_EOF_OFFSET, tv2ms(&afhi->eof_tv));
        strcpy(buf + AFHI_INFO_STRING_OFFSET, afhi->info_string); /* OK */
        PARA_DEBUG_LOG("last byte written: %p\n", buf + AFHI_INFO_STRING_OFFSET + strlen(afhi->info_string));
 }
@@ -357,6 +360,7 @@ static void load_afhi(const char *buf, struct afh_info *afhi)
        afhi->bitrate = read_u32(buf + AFHI_BITRATE_OFFSET);
        afhi->frequency = read_u32(buf + AFHI_FREQUENCY_OFFSET);
        afhi->channels = read_u8(buf + AFHI_CHANNELS_OFFSET);
+       ms2tv(read_u16(buf + AFHI_EOF_OFFSET), &afhi->eof_tv);
        strcpy(afhi->info_string, buf + AFHI_INFO_STRING_OFFSET);
 }
 
@@ -719,8 +723,9 @@ int open_and_update_audio_file(struct osl_row *aft_row, struct audio_file_data *
        ret = get_attribute_text(&afd->afsi.attributes, " ", &tmp);
        if (ret < 0)
                goto err;
-       tmp[sizeof(afd->attributes_string) - 1] = '\0';
-       strcpy(afd->attributes_string, tmp); /* OK */
+       assert(tmp);
+       strncpy(afd->attributes_string, tmp, sizeof(afd->attributes_string));
+       afd->attributes_string[sizeof(afd->attributes_string) - 1] = '\0';
        free(tmp);
 
        aced.aft_row = aft_row;