コード例 #1
0
//------------------------------------------------------------------------------
/// 지정된 사이즈의 BmpFile인가를 체크한다.
//------------------------------------------------------------------------------
bool CClanMarkTransfer::Check_BmpFile( HANDLE hFile, SIZE size )
{
	DWORD dwFileSizeHigh;
	DWORD dwFileSizeLow =  GetFileSize( hFile, &dwFileSizeHigh );

	if( dwFileSizeLow == INVALID_FILE_SIZE || dwFileSizeHigh != 0 )
	{
		_RPTF1( _CRT_ASSERT,"GetFileSize Error(%d)", GetLastError() );
		g_itMGR.OpenMsgBox("CClanMarkTransfer::Check_BmpFile-GetFileSize Error" );
		return false;
	}
	
	///BMP 화일 최소 사이즈( 헤더사이즈) Check
	const int BmpHeaderSize = sizeof( BITMAPFILEHEADER ) + sizeof( BITMAPINFOHEADER );
	if( dwFileSizeLow < BmpHeaderSize )
	{
		_RPTF1( _CRT_ASSERT,"File Size is too small(%d)", dwFileSizeLow );
		g_itMGR.OpenMsgBox( CStr::Printf("%s %s",STR_CLANMARK_INVALID_FORMAT ,STR_CLANMARK_HELP_HOMEPAGE ));
		return false;
	}
	
	///File Load
	BYTE header_buffer[BmpHeaderSize];
	DWORD NumberOfBytesRead;

	if( FALSE == ReadFile( hFile, header_buffer, BmpHeaderSize, &NumberOfBytesRead, NULL ) )
	{
		_RPTF0( _CRT_ASSERT,"ReadFile Error:BmpFile" );
		g_itMGR.OpenMsgBox( "CClanMarkTransfer::Check_BmpFile-ReadFile Error" );
		return false;
	}
	/// 2. 포맷이 맞는지 체크
	BITMAPFILEHEADER* BitmapFileHeader = (BITMAPFILEHEADER*)header_buffer;
	BITMAPINFOHEADER* BitmapInfoHeader = (BITMAPINFOHEADER*)&(header_buffer[ sizeof( BITMAPFILEHEADER) ]);

	const WORD DIB_HEADER_MARKER = 0x4D42;
	if( BitmapFileHeader->bfType != DIB_HEADER_MARKER )
	{
		_RPTF0( _CRT_ASSERT,"Invalid Bmp Format File" );
		g_itMGR.OpenMsgBox( CStr::Printf("%s %s",STR_CLANMARK_INVALID_FORMAT,STR_CLANMARK_HELP_HOMEPAGE ) );
		return false;
	}

	if( size.cx > 0 && size.cy > 0 )
	{
		if( BitmapInfoHeader->biWidth != size.cx || BitmapInfoHeader->biHeight != size.cy )
		{
			_RPTF2( _CRT_ASSERT,"Invalid Canvas Size( Require - Width:20,Height:20 ) ,File (Width:%d, Height:%d)", 
				BitmapInfoHeader->biWidth, BitmapInfoHeader->biHeight );

			g_itMGR.OpenMsgBox( CStr::Printf("%s %s",STR_CLANMARK_INVALID_SIZE ,STR_CLANMARK_HELP_HOMEPAGE ));
			return false;
		}
	}
	return true;
}
コード例 #2
0
ファイル: transfer.cpp プロジェクト: pics860/callcenter
void CTransfer::OnDropped(BOOL bError)
{
	CString strHost = inet_ntoa( m_pHost.sin_addr );
	_RPTF1(_CRT_WARN, _T("WARNING: Dropped Connection From %s\n"), strHost);
	
	Disconnect();
}
コード例 #3
0
//--------------------------------------------------------------------------------
/// 1. 서버로 부터 받은 데이타로 임시 ZipFile생성	
//--------------------------------------------------------------------------------
bool CClanMarkTransfer::SaveZipFileFromServer( const char* TempZipFileName, DWORD* pdwNumberOfBytesWritten,  BYTE* pData, int iSize )
{	
	HANDLE hTempZipFile = CreateFile( TempZipFileName, GENERIC_WRITE, 0, 0,CREATE_ALWAYS ,FILE_ATTRIBUTE_NORMAL, NULL );

	if( hTempZipFile == INVALID_HANDLE_VALUE )
	{
		DWORD dwErr = GetLastError();
		_RPTF2( _CRT_ASSERT,"CreateFile Error:%s %d",TempZipFileName, dwErr );
		g_itMGR.OpenMsgBox( "CClanMarkTransfer::SaveZipFileFromServer - CreateFile Error");
		return false;
	}
		
	if( FALSE == WriteFile( hTempZipFile, pData, iSize, pdwNumberOfBytesWritten, NULL ) )
	{
		int iErr = GetLastError();
		_RPTF1( _CRT_ASSERT,"WriteFile Error:%d", iErr );
		g_itMGR.OpenMsgBox( "CClanMarkTransfer::SaverZipFileFromServer - WriteFile Error");
		CloseHandle( hTempZipFile );
		return false;
	}

	assert( iSize == *pdwNumberOfBytesWritten );
	CloseHandle( hTempZipFile );

	return true;
}
コード例 #4
0
//--------------------------------------------------------------------------------
/// 3. Memory에 로딩하면서 바로 임시 화일에 저장
//--------------------------------------------------------------------------------
bool CClanMarkTransfer::WriteToZipFile( const char* TempZipFileName, HANDLE hBmpFile, DWORD* pdwNumberOfBytesRead )
{		
	gzFile  zfp;

	if( (zfp = gzopen( TempZipFileName, "wb9")) == NULL )
    {
		_RPTF0( _CRT_ASSERT,"Open Error, Temporary zip file" );
		g_itMGR.OpenMsgBox( "CClanMarkTransfer::WriteToZipFile-gzopen Error");
        return false;
    }

	BYTE read_buffer[256];
	SetFilePointer( hBmpFile, 0, 0, FILE_BEGIN );//File Pointer앞으로 이동
    while( ReadFile( hBmpFile,read_buffer, sizeof(read_buffer),pdwNumberOfBytesRead,NULL ) )
    {
		if( *pdwNumberOfBytesRead == 0 )///EOF
			break;
        if (gzwrite(zfp, read_buffer, *pdwNumberOfBytesRead ) < 0)
        {
			int lerrno = 0;	
			g_itMGR.OpenMsgBox( "CClanMarkTransfer::WriteToZipFile-gzwrite Error");
			_RPTF1( _CRT_ASSERT,"gzwrite error:%s",gzerror(zfp,&lerrno ));
			gzclose(zfp);			
			return false;
        }
    }
	gzclose(zfp);

	return true;
}
コード例 #5
0
//--------------------------------------------------------------------------------
/// 2. CRC를 구한다.
//--------------------------------------------------------------------------------
bool CClanMarkTransfer::GetImageFileCRC( HANDLE hBmpFile, WORD* pBmpCRC16, DWORD* pdwNumberOfBytesRead, DWORD* pdwFileSizeHigh, DWORD* pdwFileSizeLow )
{	
	if( pdwFileSizeLow == NULL || pdwFileSizeHigh == NULL )
		return false;

	*pdwFileSizeLow =  GetFileSize( hBmpFile, pdwFileSizeHigh );
	if( *pdwFileSizeLow == INVALID_FILE_SIZE || *pdwFileSizeHigh != 0 )
	{
		_RPTF1( _CRT_ASSERT,"GetFileSize Error(%d)", GetLastError() );		
		g_itMGR.OpenMsgBox( "CClanMarkTransfer::GetImageFileCRC-GetFileSize Error" );
		return false;
	}
	
	BYTE* bmp_buffer = new BYTE[*pdwFileSizeLow];

	SetFilePointer( hBmpFile, 0, 0, FILE_BEGIN );
	if( FALSE == ReadFile( hBmpFile, bmp_buffer, *pdwFileSizeLow, pdwNumberOfBytesRead, NULL ) )
	{
		g_itMGR.OpenMsgBox( "CClanMarkTransfer::GetImageFileCRC-ReadFile" );
		_RPTF0( _CRT_ASSERT,"ReadFile Error:BmpFile" );
		delete []bmp_buffer;		
		return false;
	}

	assert( *pdwFileSizeLow == *pdwNumberOfBytesRead );
	*pBmpCRC16 = classCRC::DataCRC16( bmp_buffer, *pdwFileSizeLow );
	delete []bmp_buffer;

	return true;
}
コード例 #6
0
//--------------------------------------------------------------------------------
/// 2. 임시 ZipFile로 실제 Bmp화일을 생성한다.
//--------------------------------------------------------------------------------
void CClanMarkTransfer::CreateImageFileFromZipFile( const char* TempZipFileName, int iClanID, DWORD* pdwNumberOfBytesWritten )
{	
	unsigned int server_id = CGame::GetInstance().GetSelectedServerID();

	std::string strBmpFileName;
	CClanMarkUserDefined::GetClanMarkFileName( CGame::GetInstance().GetSelectedServerID(), iClanID, strBmpFileName );

	HANDLE hBmpFile = CreateFile( strBmpFileName.c_str(), GENERIC_WRITE, 0, 0,CREATE_ALWAYS ,FILE_ATTRIBUTE_NORMAL, NULL );
	if( hBmpFile == INVALID_HANDLE_VALUE )
	{
		DWORD dwErr = GetLastError();
		_RPTF2( _CRT_ASSERT,"CreateFile Error:%s %d", strBmpFileName.c_str(), dwErr );
		g_itMGR.OpenMsgBox("CClanMarkTransfer::CreateImageFileFromZipFile-CreateFile Error");
		return;
	}

	gzFile  zfp;
	if( (zfp = gzopen(TempZipFileName, "rb")) == NULL )
    {
		_RPTF1( _CRT_ASSERT,"gzopen error:%s", TempZipFileName );
		g_itMGR.OpenMsgBox("CClanMarkTransfer::CreateImageFileFromZipFile-gzopen Error");
		CloseHandle( hBmpFile );
        return;
    }
	
	int read_size;
	char buffer[256];	
	while( ( read_size = gzread( zfp, buffer, sizeof(buffer) )) > 0 )
	{
		if( FALSE == WriteFile( hBmpFile, buffer, read_size, pdwNumberOfBytesWritten, NULL ) )
		{
			_RPTF2( _CRT_ASSERT,"WriteFile Error:%s %d", strBmpFileName.c_str(), GetLastError() );
			break;
		}
	}

	if( read_size == -1 )
	{
		int lerrno;
		_RPTF1( _CRT_ASSERT, "gzread error:%s", gzerror( zfp, &lerrno ) );
	}

	gzclose(zfp);
	CloseHandle( hBmpFile );
}
コード例 #7
0
ファイル: OptionsMgr.cpp プロジェクト: seanedwards/COS-420
/**
 * @brief Add new option to list.
 * @param [in] name Option's name.
 * @param [in] defaultValue Option's initial and default value.
 */
int COptionsMgr::AddOption(LPCTSTR name, varprop::VariantValue defaultValue)
{
	int retVal = OPT_OK;
	COption tmpOption;

#ifdef _DEBUG
	OptionsMap::const_iterator found = m_optionsMap.find(name);
	if (found != m_optionsMap.end())
		_RPTF1(_CRT_WARN, "Re-adding option: %s !", name);
#endif

	retVal = tmpOption.Init(name, defaultValue);
	if (retVal == OPT_OK)
		m_optionsMap[name] = tmpOption;
	else
		_RPTF1(_CRT_ERROR, "Could not add option: %s!", name);

	return retVal;
}
コード例 #8
0
ファイル: AutoSaveDlg.cpp プロジェクト: qdotme/Sekaiju
// 『今すぐすべての自動保存ファイルを削除する』
void CAutoSaveDlg::OnDeleteAllFileNow () {

    // 本当にすべて削除してよいか確認
    long lRet = 0;
    CString strMsg;
    VERIFY (strMsg.LoadString (IDS_ARE_YOU_SURE_TO_DELETE_ALL_AUTOSAVEFILE_NOW_REALLY));
    lRet = AfxMessageBox (strMsg, MB_ICONQUESTION | MB_YESNOCANCEL);
    if (lRet != IDYES) {
        return;
    }

    // autosaveディレクトリ内の拡張子(*.skj)のファイルを全て削除する。
    lRet = 0;
    CString strFileName1;
    CString strFileName2;
    VERIFY (strFileName1.LoadString (IDS_AUTOSAVEFILENAME));
    strFileName2 = m_strExeFilePath + strFileName1;
    HANDLE hFind = NULL;
    WIN32_FIND_DATA fd;
    hFind = ::FindFirstFile ((LPCTSTR)strFileName2, &fd);
    if (hFind != INVALID_HANDLE_VALUE) {
        do {
            if (_tcscmp (fd.cFileName, _T(".")) != 0 &&
                    _tcscmp (fd.cFileName, _T("..")) != 0) {
                CString strFileName3;
                CString strFileName4;
                VERIFY (strFileName3.LoadString (IDS_AUTOSAVEDIRNAME));
                strFileName4 = m_strExeFilePath + strFileName3 + fd.cFileName;
                BOOL bRet = _tremove (strFileName4);
                if (bRet == FALSE) {
                    _RPTF1 (_CRT_WARN, "AutoSaveFile Delete Failed. - \"%s\"\n", strFileName4);
                }
                else {
                    _RPTF1 (_CRT_WARN, "AutoSaveFile Delete Successful. - \"%s\"\n", strFileName4);
                }
                lRet++;
            }
        } while (::FindNextFile (hFind, &fd));
        ::FindClose (hFind);
    }
}
コード例 #9
0
ファイル: plugfgrp.cpp プロジェクト: IDA-RE-things/idaplugs
bool CFileGroups::CreateAddFilesMenu(HWND hwndDlg, HMENU &hAddMenu,
	const CFileGroups::filegroups_t &file_groups, UINT base) {
	DestroyAddFilesMenu(hAddMenu);
	if (file_groups.empty()) return false;
	if ((hAddMenu = CreatePopupMenu()) == NULL) {
		_RPTF1(_CRT_ERROR, "%s(...): CreatePopupMenu() returned NULL", __FUNCTION__);
		return false;
	}
	AppendMenu(hAddMenu, MF_STRING, IDBROWSE, "Browse\x085");
	const HMENU hGroupsMenu(CreatePopupMenu());
	if (hGroupsMenu == NULL) {
		DestroyMenu(hAddMenu);
		_RPTF1(_CRT_ERROR, "%s(...): CreatePopupMenu() returned NULL", __FUNCTION__);
		return false;
	}
	for (filegroups_t::const_iterator i = file_groups.begin(); i != file_groups.end(); ++i)
		AppendMenu(hGroupsMenu, MF_STRING, base +
			distance((filegroups_t::const_iterator)file_groups.begin(), i),
			i->first.c_str());
	AppendMenu(hAddMenu, MF_POPUP | MF_STRING,
		reinterpret_cast<UINT>(hGroupsMenu), "Add group");
	return true;
}
コード例 #10
0
ファイル: svctlreg.cpp プロジェクト: zukisoft/external
Parameter::Parameter(const ServiceParametersBase *pParent, DWORD dwIndex, DWORD dwType)
: m_pBase(pParent)
{
	_ASSERTE(pParent != NULL);			// Should never be a NULL pointer
	_ASSERTE(dwIndex > 0);				// Zero indexes are not allowed
	_ASSERTE(dwType > REG_NONE);		// Type code must be valid

	m_pEntry = pParent->FindParameterEntry(dwIndex);
	if(m_pEntry) {

		// Check that the correct type code has been specified for the parameter

		if(dwType != m_pEntry->Type) {

			m_pEntry = NULL;		// Reset the parameter pointer to NULL
			
			_RPTF1(_CRT_ASSERT, "Incorrect registry value type code specified "
				"for parameter with index of %d", dwIndex);
		}
	}
		
	else _RPTF1(_CRT_ASSERT, "Unable to locate registry value with index %d", dwIndex);
}
コード例 #11
0
ファイル: OptionsMgr.cpp プロジェクト: seanedwards/COS-420
/**
 * @brief Get option value from list by name.
 * @param [in] name Name of the option to get.
 * @return Option's value as variant type.
 */
varprop::VariantValue COptionsMgr::Get(LPCTSTR name) const
{
	varprop::VariantValue value;

	OptionsMap::const_iterator found = m_optionsMap.find(name);
	if (found != m_optionsMap.end())
	{
		value = found->second.Get();
	}
	else
	{
		_RPTF1(_CRT_ERROR, "Could not find option: %s!", name);
	}
	return value;
}
コード例 #12
0
ファイル: zenfolders.cpp プロジェクト: sqba/zenfolders
STDAPI DllCanUnloadNow(void)
{
	if(g_DllRefCount > 0)
	{
		_RPTF1(_CRT_WARN, "RefCount=%d\n", g_DllRefCount);
		for(int i=0; i<ENUM_CLASSES_LENGTH; i++)
		{
			if(g_references[i] > 0)
			{
				LPCTSTR lpszClass = GetClassName(i);
				_RPTF2(_CRT_WARN, "%s has %d references\n", lpszClass, g_references[i]);
			}
		}
		return S_FALSE;
	}
	return S_OK;
	//return ((g_DllRefCount > 0) ? S_FALSE : S_OK);
}
コード例 #13
0
ファイル: OptionsMgr.cpp プロジェクト: seanedwards/COS-420
/**
 * @brief Set option value.
 * 
 * Set new value for option. If automatic conversion is not allowed,
 * type of value must match to type set when option was initialised.
 * @param [in] value New value to set.
 * @param [in] allowConversion Is automatic type conversion allowed?
 * @sa COption::Init()
 */
int COption::Set(varprop::VariantValue value, bool allowConversion)
{
	int retVal = OPT_OK;

	// Check that type matches
	varprop::VT_TYPE inType = value.GetType();
	if (value.GetType() != m_value.GetType())
	{
		if (allowConversion)
		{
			if (ConvertType(value, m_value.GetType()))
				return Set(value);
		}
		_RPTF1(_CRT_ERROR, "Wrong type for option: %s", m_strName.c_str());
		return OPT_WRONG_TYPE;
	}

	switch (inType)
	{
	case varprop::VT_NULL:
		retVal = OPT_UNKNOWN_TYPE;
		break;
	case varprop::VT_BOOL:
		m_value.SetBool(value.GetBool());
		break;
	case varprop::VT_INT:
		m_value.SetInt(value.GetInt());
		break;
	case varprop::VT_FLOAT:
		m_value.SetFloat(value.GetFloat());
		break;
	case varprop::VT_STRING:
		m_value.SetString(value.GetString());
		break;
	case varprop::VT_TIME:
		m_value.SetTime(value.GetTime());
		break;
	default:
		retVal = OPT_UNKNOWN_TYPE;
	}
	return retVal;
}
コード例 #14
0
ファイル: OptionsMgr.cpp プロジェクト: seanedwards/COS-420
/**
 * @brief Set new value for option.
 * @param [in] name Option's name.
 * @param [in] value Option's new value.
 */
int COptionsMgr::Set(LPCTSTR name, varprop::VariantValue value)
{
	int retVal = OPT_OK;

	OptionsMap::const_iterator found = m_optionsMap.find(name);
	if (found != m_optionsMap.end())
	{
		// Allow automatic conversion so we don't bother callsites about this!
		COption tmpOption = found->second;
		retVal = tmpOption.Set(value, true);
		if (retVal == OPT_OK)
			m_optionsMap[name] = tmpOption;
	}
	else
	{
		_RPTF1(_CRT_ERROR, "Could not set option: %s", name);
		retVal = OPT_NOTFOUND;
	}
	return retVal;
}
コード例 #15
0
void CPrefKeyBindingsPage::TranslateHKToDS(CString& keyStr, WORD vk, WORD mod)
{
    if (vk == 0)  // no key?
        return;

    // start with a fresh string
    int      i;

    keyStr.Empty();

    // translate modifiers:
    if (mod & HOTKEYF_CONTROL)  keyStr += "CTRL+";
    if (mod & HOTKEYF_ALT)      keyStr += "ALT+";
    if (mod & HOTKEYF_SHIFT)    keyStr += "SHIFT+";

    // translate m_vk:
	if (isalnum(vk))
	{
		keyStr += (TCHAR)vk;
	}
    else
    {
        // use m_vk map
        for (i = 0; i < vkNamesCount; i++)
        {
            if (VKNames[i].m_vk == vk)
                break;
        }

        if (i >= vkNamesCount)
        {
            _RPTF1(_CRT_ERROR,
                "Could not identify virtual key (m_vk=%d).", vk);
            return;
        }

        keyStr += VKNames[i].m_name;
    }
}
コード例 #16
0
ファイル: OptionsMgr.cpp プロジェクト: seanedwards/COS-420
/**
 * @brief Change default value for option.
 *
 * Set new value for option default value.  If automatic conversion is not
 * allowed, type of value must match to type set when option was initialised.
 * @param [in] defaultValue New default value.
 * @sa COption::Init()
 */
int COption::SetDefault(varprop::VariantValue defaultValue)
{
	int retVal = OPT_OK;

	// Check that type matches
	varprop::VT_TYPE inType = defaultValue.GetType();
	if (inType != m_valueDef.GetType())
	{
		_RPTF1(_CRT_ERROR, "Wrong type for option: %s!", m_strName.c_str());
		return OPT_WRONG_TYPE;
	}

	switch (inType)
	{
	case varprop::VT_NULL:
		retVal = OPT_UNKNOWN_TYPE;
		break;
	case varprop::VT_BOOL:
		m_valueDef.SetBool(defaultValue.GetBool());
		break;
	case varprop::VT_INT:
		m_valueDef.SetInt(defaultValue.GetInt());
		break;
	case varprop::VT_FLOAT:
		m_valueDef.SetFloat(defaultValue.GetFloat());
		break;
	case varprop::VT_STRING:
		m_valueDef.SetString(defaultValue.GetString());
		break;
	case varprop::VT_TIME:
		m_valueDef.SetTime(defaultValue.GetTime());
		break;
	default:
		retVal = OPT_UNKNOWN_TYPE;
	}
	return retVal;
}
コード例 #17
0
//--------------------------------------------------------------------------------
/// 4. 임시저장 zip화일을 loading해서 서버로 보낸다.
//--------------------------------------------------------------------------------
bool CClanMarkTransfer::SendToServerTempZipFile( const char* TempZipFileName, WORD* pBumCRC16, DWORD* pdwFileSizeHigh, DWORD* pdwFileSizeLow )
{	
	HANDLE hTempZipFile = CreateFile( TempZipFileName, GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,NULL );

	if( hTempZipFile == INVALID_HANDLE_VALUE )
	{
		DWORD dwErr = GetLastError();
		_RPTF1( _CRT_ASSERT,"CreateFile Error : Temporary ZipFile - Invalid_handle_value(%d)", dwErr );
		g_itMGR.OpenMsgBox( "CClanMarkTranser::SendToServerTempZipFile - CreateFile Error" );
		return false;
	}
	
	*pdwFileSizeLow =  GetFileSize( hTempZipFile, pdwFileSizeHigh );

	if( *pdwFileSizeLow == INVALID_FILE_SIZE )
	{
		DWORD dwErr = GetLastError();
		if( *pdwFileSizeHigh == 0 )
		{
			_RPTF1( _CRT_ASSERT,"GetFileSize Error(%d)", dwErr );
		}
		else
		{
			if( dwErr != NO_ERROR )		
			{
				_RPTF0( _CRT_ASSERT,"GetFileSize Error" );
			}
		}
		g_itMGR.OpenMsgBox(" CClanMarkTransfer::SendToServerTempZipFile - GetFileSize Error");
	}
	else
	{
		_ASSERT( *pdwFileSizeHigh == 0 );///2^32 크기만 지원한다. 더큰 사이즈일경우는 무시한다.
		if( *pdwFileSizeHigh == 0 )
		{
			BYTE* buffer = new BYTE[ *pdwFileSizeLow ];
			DWORD NumberOfBytesReadZipFile;
			if( ReadFile( hTempZipFile, buffer, *pdwFileSizeLow, &NumberOfBytesReadZipFile, NULL ) )
			{
				assert( *pdwFileSizeLow == NumberOfBytesReadZipFile );
				assert( NumberOfBytesReadZipFile <= 1000 );
				if( NumberOfBytesReadZipFile <= 1000 )
				{
					g_pNet->Send_cli_CLANMARK_SET( buffer, NumberOfBytesReadZipFile, *pBumCRC16 );
				}
				else
				{
					_RPTF0( _CRT_ASSERT,"Size is too big" );
					g_itMGR.OpenMsgBox( CStr::Printf("%s %s",STR_CLANMARK_INVALID_SIZE,STR_CLANMARK_HELP_HOMEPAGE) );
				}
			}
			else
			{
				_RPTF0( _CRT_ASSERT,"ReadFile Error:Temporary ZipFile" );
				g_itMGR.OpenMsgBox( "ReadFile Error:Temporary ZipFile");
			}
			delete[] buffer;
		}
	}
	CloseHandle( hTempZipFile );
	return true;
}
コード例 #18
0
//----------------------------------------------------------------------------------------------------/
///1. File이 있는지 체크
///2. 포맷이 맞는지 체크 --> 별도의 Class에서 확인한다
///3. File을 Load해서 temp.gz생성
///4. 임시저장 zip file을 Memory에 올린후 서버로 전송( size check - 1kbyte 이하이어야 한다 )
//----------------------------------------------------------------------------------------------------/
bool  CClanMarkTransfer::RegisterMarkToServer( int iClanID, const char* pStrFileName )
{
	assert( pStrFileName );
	
	BYTE* pDATA					= NULL;
	int iSize					= 0;
	WORD bmp_crc16				= 0;
	DWORD dwNumberOfBytesRead	= 0;

	DWORD dwFileSizeHigh		= 0;
	DWORD dwFileSizeLow			= 0;
	


	/// 0. BMP 파일 오픈
	HANDLE hBmpFile = CreateFile( pStrFileName, GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,NULL );
	if( hBmpFile == INVALID_HANDLE_VALUE )
	{
		DWORD dwErr = GetLastError();
		_RPTF1( _CRT_ASSERT,"CreateFile Error : Bmp File - Invalid_handle_value(%d)", dwErr );
		g_itMGR.OpenMsgBox( CStr::Printf("%s %s",STR_CLANMARK_FILE_NOTFOUNT_REGISTER ,STR_CLANMARK_HELP_HOMEPAGE ) );
		return false;
	}

	/// 1. 포맷이 맞는지 체크
	if( CheckValidImage( hBmpFile ) == false )
	{
		//g_itMGR.OpenMsgBox( STR_CLANMARK_INVALID_FORMAT	);
		CloseHandle( hBmpFile );	
		return false;
	}


	/// 2. CRC를 구한다.
	if( GetImageFileCRC( hBmpFile, &bmp_crc16, &dwNumberOfBytesRead, &dwFileSizeHigh, &dwFileSizeLow ) == false )
	{
		_RPTF0( _CRT_ASSERT,"GetImageFileCRC Error" );
		CloseHandle( hBmpFile );
		return false;
	}

	
	const char* TempZipFileName = "temp.gz";


	/// 3. Memory에 로딩하면서 바로 임시 화일에 저장
	if( WriteToZipFile( TempZipFileName, hBmpFile, &dwNumberOfBytesRead ) == false )
	{
		_RPTF0( _CRT_ASSERT,"WriteToZipFile Error" );
		CloseHandle( hBmpFile );
		return false;
	}

	CloseHandle( hBmpFile );


	/// 4. 임시저장 zip화일을 loading해서 서버로 보낸다.
	if( SendToServerTempZipFile( TempZipFileName, &bmp_crc16, &dwFileSizeHigh, &dwFileSizeLow ) == false )
		return false;

	return true;
}
コード例 #19
0
void ResourceHandle::onRequestComplete(LPARAM lParam)
{
    if (d->m_writing) {
        DWORD bytesWritten;
        InternetWriteFile(d->m_secondaryHandle,
                          d->m_formDataString + (d->m_formDataLength - d->m_bytesRemainingToWrite),
                          d->m_bytesRemainingToWrite,
                          &bytesWritten);
        d->m_bytesRemainingToWrite -= bytesWritten;
        if (!d->m_bytesRemainingToWrite) {
            // End the request.
            d->m_writing = false;
            HttpEndRequest(d->m_secondaryHandle, 0, 0, (DWORD_PTR)d->m_jobId);
            free(d->m_formDataString);
            d->m_formDataString = 0;
        }
        return;
    }

    HINTERNET handle = (method() == "POST") ? d->m_secondaryHandle : d->m_resourceHandle;
    BOOL ok = FALSE;

    static const int bufferSize = 32768;
    char buffer[bufferSize];
    INTERNET_BUFFERSA buffers;
    buffers.dwStructSize = sizeof(INTERNET_BUFFERSA);
    buffers.lpvBuffer = buffer;
    buffers.dwBufferLength = bufferSize;

    bool receivedAnyData = false;
    while ((ok = InternetReadFileExA(handle, &buffers, IRF_NO_WAIT, (DWORD_PTR)this)) && buffers.dwBufferLength) {
        if (!hasReceivedResponse()) {
            setHasReceivedResponse();
            ResourceResponse response;
            client()->didReceiveResponse(this, response);
        }
        client()->didReceiveData(this, buffer, buffers.dwBufferLength, 0);
        buffers.dwBufferLength = bufferSize;
    }

    PlatformDataStruct platformData;
    platformData.errorString = 0;
    platformData.error = 0;
    platformData.loaded = ok;

    if (!ok) {
        int error = GetLastError();
        if (error == ERROR_IO_PENDING)
            return;
        DWORD errorStringChars = 0;
        if (!InternetGetLastResponseInfo(&platformData.error, 0, &errorStringChars)) {
            if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
                platformData.errorString = new TCHAR[errorStringChars];
                InternetGetLastResponseInfo(&platformData.error, platformData.errorString, &errorStringChars);
            }
        }
        _RPTF1(_CRT_WARN, "Load error: %i\n", error);
    }
    
    if (d->m_secondaryHandle)
        InternetCloseHandle(d->m_secondaryHandle);
    InternetCloseHandle(d->m_resourceHandle);

    client()->didFinishLoading(this);
    delete this;
}
コード例 #20
0
void CPrefKeyBindingsPage::TranslateDSToHK(CString keyStr, WORD& vk, WORD& mod)
{
	mod = 0;
	vk = 0;

	if (keyStr.IsEmpty())
		return;
	
	// Build the modifier by cycling through the + symbols.
	int lastPlusPos = 0;
	int plusPos = keyStr.Find('+', lastPlusPos);
	while (plusPos != -1)
	{
		CString str = keyStr.Mid(lastPlusPos, plusPos - lastPlusPos);
		str.MakeUpper();
		if (str == "CTRL")
			mod |= HOTKEYF_CONTROL;
		else if (str == "ALT")
			mod |= HOTKEYF_ALT;
		else if (str == "SHIFT")
			mod |= HOTKEYF_SHIFT;
		
		lastPlusPos = plusPos + 1;
		plusPos = keyStr.Find('+', lastPlusPos);
	}
    
	// Now, build the virtual key code.
	CString vkStr = keyStr.Mid(lastPlusPos);

	// Potentially a letter or number.
	if (vkStr.GetLength() == 1)
	{
		if (isalnum(vkStr[0]))
			vk = (WORD)vkStr[0];
	}

	// Translated yet?
	if (vk == 0)
	{
        // use m_vk map
		int i;
        for (i = 0; i < vkNamesCount; i++)
        {
            if (vkStr.CompareNoCase(VKNames[i].m_name) == 0)
                break;
        }

        if (i >= vkNamesCount)
        {
            _RPTF1(_CRT_ERROR,
                "Could not identify virtual key (m_vk=%d).", vk);
            return;
        }

		vk = VKNames[i].m_vk;

		// Is it extended?
		mod |= (VKNames[i].m_extended ? HOTKEYF_EXT : 0);
//		UINT scanCode = MapVirtualKey(vk, 0);
//		scanCode = scanCode;
	}
}
コード例 #21
0
ファイル: DiffUtils.cpp プロジェクト: YueLinHo/WinMerge
/**
 * @brief Compare two files (as earlier specified).
 * @return DIFFCODE as a result of compare.
 */
int DiffUtils::diffutils_compare_files()
{
	int bin_flag = 0;
	int bin_file = 0; // bitmap for binary files

	// Do the actual comparison (generating a change script)
	struct change *script = NULL;
	bool success = Diff2Files(&script, 0, &bin_flag, false, &bin_file);
	if (!success)
	{
		return DIFFCODE::FILE | DIFFCODE::TEXT | DIFFCODE::CMPERR;
	}
	UINT code = DIFFCODE::FILE | DIFFCODE::TEXT | DIFFCODE::SAME;

	// make sure to start counting diffs at 0
	// (usually it is -1 at this point, for unknown)
	m_ndiffs = 0;
	m_ntrivialdiffs = 0;

	if (script)
	{
		struct change *next = script;
		struct change *thisob = 0, *end = 0;

		String asLwrCaseExt;
		String LowerCaseExt = CA2T(m_inf[0].name);
		int PosOfDot = LowerCaseExt.rfind('.');
		if (PosOfDot != -1)
		{
			LowerCaseExt.erase(0, PosOfDot + 1);
			CharLower(&*LowerCaseExt.begin());
			asLwrCaseExt = LowerCaseExt;
		}

		while (next)
		{
			/* Find a set of changes that belong together.  */
			thisob = next;
			end = find_change(next);

			/* Disconnect them from the rest of the changes,
			making them a hunk, and remember the rest for next iteration.  */
			next = end->link;
			end->link = 0;
#ifdef _DEBUG
			debug_script(thisob);
#endif

			{
				/* Determine range of line numbers involved in each file.  */
				int first0 = 0, last0 = 0, first1 = 0, last1 = 0, deletes = 0, inserts = 0;
				analyze_hunk(thisob, &first0, &last0, &first1, &last1, &deletes, &inserts);
				if (deletes || inserts || thisob->trivial)
				{
					/* Print the lines that the first file has.  */
					int trans_a0 = 0, trans_b0 = 0, trans_a1 = 0, trans_b1 = 0;
					translate_range(&m_inf[0], first0, last0, &trans_a0, &trans_b0);
					translate_range(&m_inf[1], first1, last1, &trans_a1, &trans_b1);

					//Determine quantity of lines in this block for both sides
					int QtyLinesLeft = (trans_b0 - trans_a0);
					int QtyLinesRight = (trans_b1 - trans_a1);


					if(m_pOptions->m_filterCommentsLines || m_pOptions->m_bIgnoreBlankLines || m_pOptions->m_bIgnoreCase)
					{
						OP_TYPE op = OP_NONE;
						if (!deletes && !inserts)
							op = OP_TRIVIAL;
						else
							op = OP_DIFF;

						DIFFOPTIONS options = {0};
						options.nIgnoreWhitespace = m_pOptions->m_ignoreWhitespace;
						options.bIgnoreBlankLines = m_pOptions->m_bIgnoreBlankLines;
						options.bFilterCommentsLines = m_pOptions->m_filterCommentsLines;
						options.bIgnoreCase = m_pOptions->m_bIgnoreCase;
						options.bIgnoreEol = m_pOptions->m_bIgnoreEOLDifference;
						m_pDiffWrapper->SetOptions(&options);
  						m_pDiffWrapper->PostFilter(thisob->line0, QtyLinesLeft+1, thisob->line1, QtyLinesRight+1, op, *m_FilterCommentsManager, asLwrCaseExt.c_str());
						if(op == OP_TRIVIAL)
						{
							thisob->trivial = 1;
						}
					}

					// Match lines against regular expression filters
					// Our strategy is that every line in both sides must
					// match regexp before we mark difference as ignored.
					if(m_pFilterList && m_pFilterList->HasRegExps())
					{
						bool match2 = false;
						bool match1 = RegExpFilter(thisob->line0, thisob->line0 + QtyLinesLeft, 0);
						if (match1)
							match2 = RegExpFilter(thisob->line1, thisob->line1 + QtyLinesRight, 1);
						if (match1 && match2)
							thisob->trivial = 1;
					}

				}
				/* Reconnect the script so it will all be freed properly.  */
				end->link = next;
			}
		}
	}


	// Free change script (which we don't want)
	if (script != NULL)
	{
		struct change *p, *e;
		for (e = script; e; e = p)
		{
			if (!e->trivial)
				++m_ndiffs;
			else
				++m_ntrivialdiffs;
			p = e->link;
			free(e);
		}
		if (m_ndiffs > 0)
			code = code & ~DIFFCODE::SAME | DIFFCODE::DIFF;
	}

	// diff_2_files set bin_flag to -1 if different binary
	// diff_2_files set bin_flag to +1 if same binary

	if (bin_flag != 0)
	{
		// Clear text-flag, set binary flag
		// We don't know diff counts for binary files
		code = code & ~DIFFCODE::TEXT;
		switch (bin_file)
		{
		case BINFILE_SIDE1:
			code |= DIFFCODE::BINSIDE1;
			break;
		case BINFILE_SIDE2:
			code |= DIFFCODE::BINSIDE2;
			break;
		case BINFILE_SIDE1 | BINFILE_SIDE2:
			code |= DIFFCODE::BIN;
			break;
		default:
			_RPTF1(_CRT_ERROR, "Invalid bin_file value: %d", bin_file);
			break;
		}
		m_ndiffs = CDiffContext::DIFFS_UNKNOWN;
	}

	if (bin_flag < 0)
	{
		// Clear same-flag, set diff-flag
		code = code & ~DIFFCODE::SAME | DIFFCODE::DIFF;
	}

	return code;
}