/* Seeks a certain offset of the data * Returns the offset if seek is successful or -1 on error */ off64_t libexe_section_seek_offset( libexe_section_t *section, off64_t offset, int whence, libcerror_error_t **error ) { libexe_internal_section_t *internal_section = NULL; static char *function = "libexe_section_seek_offset"; if( section == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_ARGUMENTS, LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE, "%s: invalid section.", function ); return( -1 ); } internal_section = (libexe_internal_section_t *) section; if( internal_section->section_descriptor == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_VALUE_MISSING, "%s: invalid section - missing section descriptor.", function ); return( -1 ); } offset = libfdata_stream_seek_offset( internal_section->section_descriptor->data_stream, offset, whence, error ); if( offset == -1 ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_IO, LIBCERROR_IO_ERROR_SEEK_FAILED, "%s: unable to seek in section data stream.", function ); return( -1 ); } return( offset ); }
/* Seeks a certain offset * Returns the offset if seek is successful or -1 on error */ off64_t libfsntfs_data_stream_seek_offset( libfsntfs_data_stream_t *data_stream, off64_t offset, int whence, libcerror_error_t **error ) { libfsntfs_internal_data_stream_t *internal_data_stream = NULL; static char *function = "libfsntfs_data_stream_seek_offset"; if( data_stream == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_ARGUMENTS, LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE, "%s: invalid data stream.", function ); return( -1 ); } internal_data_stream = (libfsntfs_internal_data_stream_t *) data_stream; offset = libfdata_stream_seek_offset( internal_data_stream->data_cluster_block_stream, offset, whence, error ); if( offset == -1 ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_IO, LIBCERROR_IO_ERROR_SEEK_FAILED, "%s: unable to seek offset in data cluster block stream.", function ); return( -1 ); } return( offset ); }