⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libewf_segment_table.c

📁 sleuthit-2.09 一个磁盘的工具集
💻 C
📖 第 1 页 / 共 2 页
字号:
		}		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 + -