?? libewf_segment_table.c
字號:
} if( segment_table->section_list[ iterator ] != NULL ) { section_list_entry = segment_table->section_list[ iterator ]->first; while( section_list_entry != NULL ) { current_section_list_entry = section_list_entry; section_list_entry = section_list_entry->next; libewf_common_free( current_section_list_entry ); } libewf_common_free( segment_table->section_list[ iterator ] ); } } libewf_common_free( segment_table->filename ); libewf_common_free( segment_table->file_descriptor ); libewf_common_free( segment_table->file_offset ); libewf_common_free( segment_table->amount_of_chunks ); libewf_common_free( segment_table->section_list ); libewf_common_free( segment_table );}/* Checks if a segment table entry is set * Returns 0 when entry is not set and 1 if set */uint8_t libewf_segment_table_values_is_set( LIBEWF_SEGMENT_TABLE *segment_table, uint16_t segment ){ if( segment_table == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_values_is_set: invalid segment table.\n" ); return( 0 ); } if( segment > segment_table->amount ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_values_is_set: segment out of range.\n" ); return( 0 ); } return( (uint8_t) ( segment_table->filename[ segment ] != NULL ) );}#if defined( HAVE_WIDE_CHARACTER_TYPE ) && defined( HAVE_WIDE_CHARACTER_SUPPORT_FUNCTIONS )/* Gets a wide character filename of a certain segment * Returns the filename pointer, or NULL on error */wchar_t *libewf_segment_table_get_wide_filename( LIBEWF_SEGMENT_TABLE *segment_table, uint16_t segment ){ if( segment_table == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_get_wide_filename: invalid segment table.\n" ); return( NULL ); } if( segment > segment_table->amount ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_get_wide_filename: segment out of range.\n" ); return( NULL ); } return( segment_table->filename[ segment ] );}#else/* Gets a filename of a certain segment * Returns the filename pointer, or NULL on error */char *libewf_segment_table_get_filename( LIBEWF_SEGMENT_TABLE *segment_table, uint16_t segment ){ if( segment_table == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_get_filename: invalid segment table.\n" ); return( NULL ); } if( segment > segment_table->amount ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_get_filename: segment out of range.\n" ); return( NULL ); } return( segment_table->filename[ segment ] );}#endif/* Gets the file descriptor of a certain segment * Returns the file descriptor, or -1 on error */int libewf_segment_table_get_file_descriptor( LIBEWF_SEGMENT_TABLE *segment_table, uint16_t segment ){ if( segment_table == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_get_file_descriptor: invalid segment table.\n" ); return( -1 ); } if( segment > segment_table->amount ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_get_file_descriptor: segment out of range.\n" ); return( -1 ); } return( segment_table->file_descriptor[ segment ] );}#if defined( HAVE_WIDE_CHARACTER_TYPE ) && defined( HAVE_WIDE_CHARACTER_SUPPORT_FUNCTIONS )/* Sets a wide character filename for a specific segment * Creates a duplicate of the string * Returns 1 if succesful, or -1 on error */int8_t libewf_segment_table_set_wide_filename( LIBEWF_SEGMENT_TABLE *segment_table, uint16_t segment, const wchar_t *filename, size_t length_filename ){ if( segment_table == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: invalid segment table.\n" ); return( -1 ); } if( filename == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: invalid filename.\n" ); return( -1 ); } if( segment > segment_table->amount ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: segment out of range.\n" ); return( -1 ); } if( segment_table->filename[ segment ] != NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: duplicate segments not supported: segment %d in %s was already specified in %s.\n", segment, filename, segment_table->filename[ segment ] ); return( -1 ); } if( length_filename == 0 ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: unable to process empty filename.\n" ); return( -1 ); } if( length_filename >= (size_t) SSIZE_MAX ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: invalid filename length value exceeds maximum.\n" ); return( -1 ); } /* One additional byte for the end of string character is needed */ segment_table->filename[ segment ] = (wchar_t *) libewf_common_alloc( sizeof( wchar_t ) * ( length_filename + 1 ) ); if( segment_table->filename[ segment ] == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: unable to create filename.\n" ); return( -1 ); } if( libewf_common_wide_string_copy( segment_table->filename[ segment ], filename, length_filename ) == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_wide_filename: unable to set filename.\n" ); libewf_common_free( segment_table->filename[ segment ] ); segment_table->filename[ segment ] = NULL; return( -1 ); } /* Make sure the string is terminated */ segment_table->filename[ segment ][ length_filename ] = '\0'; return( 1 );}#else/* Sets a filename for a specific segment * Creates a duplicate of the string * Returns 1 if succesful, or -1 on error */int8_t libewf_segment_table_set_filename( LIBEWF_SEGMENT_TABLE *segment_table, uint16_t segment, const char *filename, size_t length_filename ){ if( segment_table == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: invalid segment table.\n" ); return( -1 ); } if( filename == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: invalid filename.\n" ); return( -1 ); } if( segment > segment_table->amount ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: segment out of range.\n" ); return( -1 ); } if( segment_table->filename[ segment ] != NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: duplicate segments not supported: segment %d in %s was already specified in %s.\n", segment, filename, segment_table->filename[ segment ] ); return( -1 ); } if( length_filename == 0 ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: unable to process empty filename.\n" ); return( -1 ); } if( length_filename >= (size_t) SSIZE_MAX ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: invalid filename length value exceeds maximum.\n" ); return( -1 ); } /* One additional byte for the end of string character is needed */ segment_table->filename[ segment ] = (char *) libewf_common_alloc( sizeof( char ) * ( length_filename + 1 ) ); if( segment_table->filename[ segment ] == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: unable to create filename.\n" ); return( -1 ); } if( libewf_common_string_copy( segment_table->filename[ segment ], filename, length_filename ) == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_filename: unable to set filename.\n" ); libewf_common_free( segment_table->filename[ segment ] ); segment_table->filename[ segment ] = NULL; return( -1 ); } /* Make sure the string is terminated */ segment_table->filename[ segment ][ length_filename ] = '\0'; return( 1 );}#endif/* Sets a file descriptor for a specific segment * Returns 1 if succesful, or -1 on error */int8_t libewf_segment_table_set_file_descriptor( LIBEWF_SEGMENT_TABLE *segment_table, uint16_t segment, int file_descriptor ){ if( segment_table == NULL ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_file_descriptor: invalid segment table.\n" ); return( -1 ); } if( segment > segment_table->amount ) { LIBEWF_WARNING_PRINT( "libewf_segment_table_set_file_descriptor: segment out of range.\n" ); return( -1 ); } segment_table->file_descriptor[ segment ] = file_descriptor; return( 1 );}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -