consumer_avformat.c: add support for an=1, vn=1, acodec=none, and vcodec=none options...
[melted] / src / modules / kino / riff.cc
index 46d7866..a03f069 100644 (file)
@@ -21,6 +21,9 @@
 * Change log:
 * 
 * $Log$
+* Revision 1.3  2005/07/25 14:41:29  lilo_booter
+* + Minor correction for entry length being less than the data length
+*
 * Revision 1.2  2005/07/25 07:21:39  lilo_booter
 * + fixes for opendml dv avi
 *
@@ -79,7 +82,9 @@
 //#include <stdio.h>
 #include <iostream>
 #include <iomanip>
+#ifndef __FreeBSD__
 #include <byteswap.h>
+#endif /* __FreeBSD__ */
 
 using std::cout;
 using std::hex;
@@ -110,7 +115,7 @@ using std::endl;
     could not get it working on the gcc compiler so I had to use this
     workaround. We can now use id = make_fourcc("ABCD") instead. */
 
-FOURCC make_fourcc( char *s )
+FOURCC make_fourcc( const char *s )
 {
        if ( s[ 0 ] == 0 )
                return 0;
@@ -622,7 +627,7 @@ void RIFFFile::ReadChunk( int chunk_index, void *data, off_t data_len )
        entry = GetDirectoryEntry( chunk_index );
        pthread_mutex_lock( &file_mutex );
        fail_if( lseek( fd, entry.offset, SEEK_SET ) == ( off_t ) - 1 );
-       fail_neg( read( fd, data, data_len ) );
+       fail_neg( read( fd, data, entry.length > data_len ? data_len : entry.length ) );
        pthread_mutex_unlock( &file_mutex );
 }