/* Retrieves a specific segment from the segment table * Returns 1 if successful or -1 on error */ int libewf_segment_table_get_segment_by_index( libewf_segment_table_t *segment_table, uint32_t segment_number, int *file_io_pool_entry, size64_t *segment_file_size, libcerror_error_t **error ) { static char *function = "libewf_segment_table_get_segment_by_index"; off64_t element_offset = 0; uint32_t element_flags = 0; if( segment_table == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_ARGUMENTS, LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE, "%s: invalid segment table.", function ); return( -1 ); } #if SIZEOF_INT <= 4 if( segment_number > (uint32_t) INT_MAX ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_VALUE_OUT_OF_BOUNDS, "%s: invalid segment number value out of bounds.", function ); return( -1 ); } #endif if( libfdata_list_get_element_by_index( segment_table->segment_files_list, (int) segment_number, file_io_pool_entry, &element_offset, segment_file_size, &element_flags, error ) != 1 ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_GET_FAILED, "%s: unable to retrieve element: %" PRIu32 " from segment files list.", function, segment_number ); return( -1 ); } return( 1 ); }
/* Retrieves a specific extent from the extent table * Returns 1 if successful or -1 on error */ int libvmdk_extent_table_get_extent_by_index( libvmdk_extent_table_t *extent_table, int extent_index, int *file_io_pool_entry, size64_t *extent_file_size, libcerror_error_t **error ) { static char *function = "libvmdk_extent_table_get_extent_by_index"; off64_t element_offset = 0; uint32_t element_flags = 0; if( extent_table == NULL ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_ARGUMENTS, LIBCERROR_ARGUMENT_ERROR_INVALID_VALUE, "%s: invalid extent table.", function ); return( -1 ); } if( libfdata_list_get_element_by_index( extent_table->extent_files_list, extent_index, file_io_pool_entry, &element_offset, extent_file_size, &element_flags, error ) != 1 ) { libcerror_error_set( error, LIBCERROR_ERROR_DOMAIN_RUNTIME, LIBCERROR_RUNTIME_ERROR_GET_FAILED, "%s: unable to retrieve element: %d from extent files list.", function, extent_index ); return( -1 ); } return( 1 ); }