Lines 1017-1022
int32_t DVDFileSeek( dvd_file_t *dvd_fi
Link Here
|
1017 |
return offset; |
1017 |
return offset; |
1018 |
} |
1018 |
} |
1019 |
|
1019 |
|
|
|
1020 |
int32_t DVDFileSeekForce( dvd_file_t *dvd_file, int offset, int force_size ) |
1021 |
{ |
1022 |
/* Check arguments. */ |
1023 |
if( dvd_file == NULL || offset < 0 ) |
1024 |
return -1; |
1025 |
|
1026 |
if( dvd_file->dvd->isImageFile ) { |
1027 |
if( force_size < 0 ) |
1028 |
force_size = (offset - 1) / DVD_VIDEO_LB_LEN + 1; |
1029 |
if( dvd_file->filesize < force_size ) { |
1030 |
dvd_file->filesize = force_size; |
1031 |
fprintf(stderr, "libdvdread: Ignored UDF provided size of file.\n"); |
1032 |
} |
1033 |
} |
1034 |
|
1035 |
if( offset > dvd_file->filesize * DVD_VIDEO_LB_LEN ) { |
1036 |
return -1; |
1037 |
} |
1038 |
dvd_file->seek_pos = (uint32_t) offset; |
1039 |
return offset; |
1040 |
} |
1041 |
|
1020 |
ssize_t DVDReadBytes( dvd_file_t *dvd_file, void *data, size_t byte_size ) |
1042 |
ssize_t DVDReadBytes( dvd_file_t *dvd_file, void *data, size_t byte_size ) |
1021 |
{ |
1043 |
{ |
1022 |
unsigned char *secbuf_base, *secbuf; |
1044 |
unsigned char *secbuf_base, *secbuf; |
Lines 1057-1063
ssize_t DVDReadBytes( dvd_file_t *dvd_fi
Link Here
|
1057 |
memcpy( data, &(secbuf[ seek_byte ]), byte_size ); |
1057 |
memcpy( data, &(secbuf[ seek_byte ]), byte_size ); |
1058 |
free( secbuf_base ); |
1058 |
free( secbuf_base ); |
1059 |
dvd_file->seek_pos += byte_size; |
1059 |
DVDFileSeekForce(dvd_file, dvd_file->seek_pos + byte_size, -1); |
1060 |
return byte_size; |
1060 |
return byte_size; |
1061 |
} |
1061 |
} |