亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libewf_common.c

?? sleuthit-2.09 一個磁盤的工具集
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Common code for libewf - wraps external function calls * * Copyright (c) 2006-2007, Joachim Metz <forensics@hoffmannbv.nl>, * Hoffmann Investigations. All rights reserved. * * Refer to AUTHORS for acknowledgements. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, *   this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, *   this list of conditions and the following disclaimer in the documentation *   and/or other materials provided with the distribution. * - Neither the name of the creator, related organisations, nor the names of *   its contributors may be used to endorse or promote products derived from *   this software without specific prior written permission. * - All advertising materials mentioning features or use of this software *   must acknowledge the contribution by people stated in the acknowledgements. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER, COMPANY AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */#include "libewf_includes.h"#ifdef HAVE_STRING_H#include <string.h>#endif#include <libewf/libewf_definitions.h>#include "libewf_common.h"#include "libewf_notify.h"#if defined( HAVE_WINDOWS_API )#define libewf_common_strerror_r( error_number, string, size ) \	strerror_s( string, size, error_number )#define LIBEWF_COMMON_STRERROR_R_RETURN_ERROR	0#elif defined( HAVE_STRERROR_R )#define libewf_common_strerror_r( error_number, string, size ) \	strerror_r( error_number, string, size )#if defined( STRERROR_R_CHAR_P )#define LIBEWF_COMMON_STRERROR_R_RETURN_ERROR	NULL#else#define LIBEWF_COMMON_STRERROR_R_RETURN_ERROR	0#endif#endif/* Function to wrap strerror() * Returns a new instance to a string containing the error string, NULL on error */char *libewf_common_strerror( int error_number ){#if !defined( libewf_common_strerror_r ) && defined( HAVE_STRERROR )	char *static_error_string = NULL;#endif#if defined( libewf_common_strerror_r ) || defined( HAVE_STRERROR )	char *error_string        = NULL;	size_t error_string_size  = 256;	error_string = (char *) libewf_common_alloc( error_string_size * sizeof( char ) );	if( error_string == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_strerror: unable to create error string.\n" );		return( NULL );	}#endif#if defined( libewf_common_strerror_r )	if( libewf_common_strerror_r( error_number, error_string, error_string_size ) != LIBEWF_COMMON_STRERROR_R_RETURN_ERROR )	{		LIBEWF_WARNING_PRINT( "libewf_common_strerror: unable to set error string.\n" );		libewf_common_free( error_string );		return( NULL );	}	return( error_string );#elif defined( HAVE_STRERROR )	static_error_string = strerror( error_number );	if( static_error_string == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_strerror: unable to create static error string.\n" );		libewf_common_free( error_string );		return( NULL );	}	if( libewf_common_string_copy( error_string, static_error_string, error_string_size ) == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_strerror: unable to set error string.\n" );		libewf_common_free( error_string );		return( NULL );	}	return( error_string );#else	return( NULL );#endif}#if defined( HAVE_WIDE_CHARACTER_TYPE ) && defined( HAVE_WIDE_CHARACTER_SUPPORT_FUNCTIONS )#if defined( HAVE_WINDOWS_API )#define libewf_common_wide_strerror_r( error_number, string, size ) \	_wcserror_s( string, size, error_number )#define LIBEWF_COMMON_WIDE_STRERROR_R_RETURN_ERROR	0#else#error Missing wide character equivalent of strerror()#endif/* Function to wrap wide character equivalent of strerror() * Returns a new instance to a string containing the error string, NULL on error */wchar_t *libewf_common_wide_strerror( int error_number ){#if defined( libewf_wide_common_strerror_r )	wchar_t *error_string      = NULL;	uint16_t error_string_size = 256;	error_string = (wchar_t *) libewf_common_alloc( error_string_size * sizeof( wchar_t ) );	if( error_string == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_wide_strerror: unable to create error string.\n" );		return( NULL );	}	if( libewf_common_strerror_r( error_number, error_string, error_string_size ) != LIBEWF_COMMON_STRERROR_R_RETURN_ERROR )	{		LIBEWF_WARNING_PRINT( "libewf_common_wide_strerror: unable to set error string.\n" );		libewf_common_free( error_string );		return( NULL );	}	return( error_string );#else	return( NULL );#endif}#endif/* Function to wrap open() */int libewf_common_open( const char *filename, uint8_t flags ){#if defined( HAVE_WINDOWS_API )	int file_descriptor  = 0;#endif	int open_flags       = 0;	if( filename == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_open: invalid filename.\n" );		return( -1 );	}	if( flags == LIBEWF_OPEN_READ )	{#if defined( HAVE_WINDOWS_API )		open_flags = _O_RDONLY | _O_BINARY;#else		open_flags = O_RDONLY;#endif	}	else if( flags == LIBEWF_OPEN_WRITE )	{#if defined( HAVE_WINDOWS_API )		open_flags = _O_WRONLY | _O_CREAT | _O_TRUNC | _O_BINARY;#else		open_flags = O_WRONLY | O_CREAT | O_TRUNC;#endif	}	else if( flags == LIBEWF_OPEN_READ_WRITE )	{#if defined( HAVE_WINDOWS_API )		open_flags = _O_RDWR | _O_BINARY;#else		open_flags = O_RDWR ;#endif	}	else	{		LIBEWF_WARNING_PRINT( "libewf_common_open: flags not supported.\n" );		return( -1 );	}#if defined( HAVE_WINDOWS_API )	if( _sopen_s( &file_descriptor, filename, open_flags, _SH_DENYRW, ( _S_IREAD | _S_IWRITE ) ) != 0 )	{		LIBEWF_WARNING_PRINT( "libewf_common_open: error opening file.\n" );		return( -1 );	}	return( file_descriptor );#else	return( open( filename, open_flags, 0644 ) );#endif}#if defined( HAVE_WIDE_CHARACTER_TYPE ) && defined( HAVE_WIDE_CHARACTER_SUPPORT_FUNCTIONS )/* Function to wrap wide character equivalent of open() */int libewf_common_wide_open( const wchar_t *filename, uint8_t flags ){#if defined( HAVE_WINDOWS_API )	int file_descriptor  = 0;#endif	int open_flags       = 0;	if( filename == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_wide_open: invalid filename.\n" );		return( -1 );	}	if( flags == LIBEWF_OPEN_READ )	{#if defined( HAVE_WINDOWS_API )		open_flags = _O_RDONLY | _O_BINARY;#else		open_flags = O_RDONLY;#endif	}	else if( flags == LIBEWF_OPEN_WRITE )	{#if defined( HAVE_WINDOWS_API )		open_flags = _O_WRONLY | _O_CREAT | _O_TRUNC | _O_BINARY;#else		open_flags = O_WRONLY | O_CREAT | O_TRUNC;#endif	}	else if( flags == LIBEWF_OPEN_READ_WRITE )	{#if defined( HAVE_WINDOWS_API )		open_flags = _O_RDWR | _O_BINARY;#else		open_flags = O_RDWR ;#endif	}	else	{		LIBEWF_WARNING_PRINT( "libewf_common_wide_open: flags not supported.\n" );		return( -1 );	}#if defined( HAVE_WINDOWS_API )	if( _wsopen_s( &file_descriptor, filename, open_flags, _SH_DENYRW, ( _S_IREAD | _S_IWRITE ) ) != 0 )	{		LIBEWF_WARNING_PRINT( "libewf_common_wide_open: error opening file.\n" );		return( -1 );	}	return( file_descriptor );#else#error libewf_common_wide_open: missing wide character equivalent of open()#endif}#endif/* Function to allocated wiped memory */void *libewf_common_alloc_cleared( size_t size, int clear_value ){	void *allocated_buffer = NULL;	allocated_buffer = libewf_common_alloc( size );	if( allocated_buffer == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_alloc_cleared: unable to allocate buffer.\n" );		return( NULL );	}	if( size > (size_t) SSIZE_MAX )	{		LIBEWF_WARNING_PRINT( "libewf_common_alloc_cleared: invalid size value exceeds maximum.\n" );		return( NULL );	}	if( libewf_common_memset( allocated_buffer, clear_value, size ) == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_alloc_cleared: unable to clear buffer.\n" );		libewf_common_free( allocated_buffer );		return( NULL );	}	return( allocated_buffer );}/* Function to reallocated fully wiped memory */void *libewf_common_realloc_full_cleared( void *buffer, size_t previous_size, size_t new_size, int clear_value ){	void *reallocated_buffer = NULL;	if( ( previous_size > (size_t) SSIZE_MAX ) || ( new_size > (size_t) SSIZE_MAX ) )	{		LIBEWF_WARNING_PRINT( "libewf_common_realloc_full_cleared: invalid size value exceeds maximum.\n" );		return( NULL );	}	if( new_size <= previous_size )	{		LIBEWF_WARNING_PRINT( "libewf_common_realloc_full_cleared: new size must be greater than previous size.\n" );		return( NULL );	}	reallocated_buffer = libewf_common_realloc( buffer, new_size );	if( reallocated_buffer == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_realloc_full_cleared: unable to reallocate buffer.\n" );		return( NULL );	}	if( libewf_common_memset( reallocated_buffer, clear_value, new_size ) == NULL )	{		LIBEWF_WARNING_PRINT( "libewf_common_realloc_full_cleared: unable to clear buffer.\n" );		libewf_common_free( reallocated_buffer );		return( NULL );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月激情综合网| 色婷婷av一区二区三区软件 | 日本国产一区二区| 国产成人精品午夜视频免费| 精品一区二区三区日韩| 蜜臀av性久久久久蜜臀av麻豆 | 91九色最新地址| 欧美xxxx在线观看| 欧美大片顶级少妇| 2023国产精品| 国产三级三级三级精品8ⅰ区| 精品国产露脸精彩对白| 久久久久国产精品免费免费搜索| 欧美高清在线精品一区| 国产精品国产三级国产普通话蜜臀| 国产精品免费网站在线观看| 又紧又大又爽精品一区二区| 亚洲成人高清在线| 久久爱www久久做| 国产v综合v亚洲欧| 日本韩国一区二区三区| 国产精品三级在线观看| 国产美女精品一区二区三区| 99久久精品情趣| 欧美区一区二区三区| 欧美videossexotv100| 天堂一区二区在线| 国内精品国产成人国产三级粉色| 99视频国产精品| 欧美丰满少妇xxxbbb| 中文一区一区三区高中清不卡| 午夜欧美视频在线观看| 欧美三级电影精品| 欧美一区二区久久| 国产精品不卡在线| 99r精品视频| 中文字幕亚洲欧美在线不卡| 人妖欧美一区二区| 色就色 综合激情| 一区二区三区 在线观看视频| 欧美bbbbb| 久久伊99综合婷婷久久伊| 韩国av一区二区三区四区| 久久精品网站免费观看| 成人小视频免费在线观看| 欧美日韩和欧美的一区二区| 亚洲成a人片在线观看中文| 欧美丰满少妇xxxxx高潮对白| 日韩一区精品视频| 久久综合九色综合欧美98| 国产iv一区二区三区| 国产精品护士白丝一区av| 在线视频综合导航| 国产情人综合久久777777| 麻豆国产精品一区二区三区| 久久天堂av综合合色蜜桃网| av午夜一区麻豆| 亚洲一区二区黄色| 色婷婷激情久久| 免费成人在线网站| 国产女人18毛片水真多成人如厕 | 91原创在线视频| xfplay精品久久| 97久久超碰国产精品| 日韩精品91亚洲二区在线观看| 精品国产一二三区| 91蝌蚪porny九色| 日本怡春院一区二区| 在线视频你懂得一区| 六月丁香综合在线视频| 中文字幕一区二区三区av| 91精品国产综合久久久蜜臀粉嫩| 亚洲一区二区av在线| 337p日本欧洲亚洲大胆精品| 色国产综合视频| 极品少妇xxxx精品少妇| 亚洲精品水蜜桃| 欧美精品一区二区三区一线天视频| k8久久久一区二区三区| 日av在线不卡| 亚洲一区免费观看| 国产精品乱码妇女bbbb| 911国产精品| 91原创在线视频| 国产精品一区2区| 国产精品电影一区二区三区| 日韩午夜激情视频| 国产在线视频不卡二| 亚洲gay无套男同| 一区二区中文字幕在线| 久久久欧美精品sm网站| 在线电影欧美成精品| 91福利在线导航| 成人av高清在线| 夜夜精品视频一区二区 | 国产成人av一区| 日本不卡视频在线| 亚洲国产人成综合网站| 日韩一区二区三区在线视频| 色综合欧美在线| 不卡在线视频中文字幕| 国产做a爰片久久毛片| 热久久国产精品| 日本aⅴ免费视频一区二区三区 | 奇米精品一区二区三区在线观看| 亚洲男人的天堂在线aⅴ视频| 在线观看区一区二| 91啪九色porn原创视频在线观看| 国产乱码字幕精品高清av| 精品亚洲porn| 精品一区在线看| 国模一区二区三区白浆| 看片网站欧美日韩| 极品美女销魂一区二区三区免费| 蜜臀av性久久久久蜜臀aⅴ流畅| 五月天国产精品| 日本成人在线电影网| 日本三级韩国三级欧美三级| 日日欢夜夜爽一区| 日韩 欧美一区二区三区| 日本亚洲三级在线| 蜜臀av性久久久久av蜜臀妖精| 日韩精品亚洲专区| 日本女优在线视频一区二区| 美美哒免费高清在线观看视频一区二区 | 亚洲一区二区欧美| 亚洲高清免费一级二级三级| 五月天欧美精品| 美腿丝袜亚洲三区| 国产精品一级黄| 波多野结衣中文字幕一区二区三区| 91在线无精精品入口| 欧洲生活片亚洲生活在线观看| 欧美日韩一二三| 日韩三级中文字幕| 国产区在线观看成人精品 | 欧美国产精品一区| 亚洲人精品午夜| 舔着乳尖日韩一区| 精东粉嫩av免费一区二区三区| 国产成人aaa| 欧美亚洲高清一区| 成人av资源站| 欧美吻胸吃奶大尺度电影| 日韩欧美国产一区二区三区 | 精品免费国产一区二区三区四区| 精品国产凹凸成av人网站| 国产精品久久久久久久久果冻传媒 | 97se亚洲国产综合在线| 欧美久久久久中文字幕| 精品国产制服丝袜高跟| 亚洲四区在线观看| 国产日韩欧美高清在线| 亚洲综合丝袜美腿| 国产尤物一区二区在线| 色视频一区二区| 欧美成人一区二区三区在线观看| 中文字幕一区二区三| 日本最新不卡在线| 91网上在线视频| 欧美mv日韩mv国产网站app| 亚洲欧洲av在线| 激情图片小说一区| 色哟哟亚洲精品| 国产日韩欧美亚洲| 日本午夜精品一区二区三区电影| 99免费精品视频| 欧美va亚洲va在线观看蝴蝶网| 一区二区三区在线观看动漫| 国产九色sp调教91| 欧美日韩1区2区| 亚洲情趣在线观看| 国产九色精品成人porny| 在线不卡免费欧美| 一区二区三区中文字幕精品精品 | 石原莉奈在线亚洲二区| 91在线视频在线| 国产欧美日韩不卡免费| 免费人成网站在线观看欧美高清| 91国产丝袜在线播放| 亚洲国产成人一区二区三区| 精品在线你懂的| 欧美一级视频精品观看| 亚洲超碰精品一区二区| 91论坛在线播放| 国产精品国产三级国产aⅴ原创| 狠狠色丁香久久婷婷综合丁香| 欧美日韩成人综合| 一区二区三区在线视频免费| 成人avav影音| 国产精品视频一二三区| 日韩1区2区3区| 日韩精品一区国产麻豆| 亚洲一区二区三区三| 99视频一区二区| 亚洲欧美aⅴ...| 91亚洲精品久久久蜜桃网站| 亚洲视频综合在线| 成人av手机在线观看| 亚洲丝袜制服诱惑|