Пример #1
0
int CLogCache::SaveOneItem(GitRev &Rev, LONG offset)
{
	if(!Rev.m_IsDiffFiles)
		return -1;

	SetFilePointer(this->m_DataFile, offset,0, 0);

	SLogCacheRevItemHeader header;

	header.m_Magic=LOG_DATA_ITEM_MAGIC;
	header.m_Version=LOG_INDEX_VERSION;
	header.m_FileCount=Rev.m_Files.GetCount();

	DWORD num;

	if(!WriteFile(this->m_DataFile,&header, sizeof(header),&num,0))
		return -1;

	CString stat;
	CString name,oldname;
	for (int i = 0; i < Rev.m_Files.GetCount(); ++i)
	{
		SLogCacheRevFileHeader header;
		header.m_Magic=LOG_DATA_FILE_MAGIC;
		header.m_Version=LOG_INDEX_VERSION;
		header.m_Action = Rev.m_Files[i].m_Action;
		header.m_Stage = Rev.m_Files[i].m_Stage;
		header.m_ParentNo = Rev.m_Files[i].m_ParentNo;
		name =  Rev.m_Files[i].GetGitPathString();
		header.m_FileNameSize = name.GetLength();
		oldname = Rev.m_Files[i].GetGitOldPathString();
		header.m_OldFileNameSize = oldname.GetLength();

		stat = Rev.m_Files[i].m_StatAdd;
		header.m_Add = (stat == _T("-"))? 0xFFFFFFFF:_tstol(stat);
		stat = Rev.m_Files[i].m_StatDel;
		header.m_Del = (stat == _T("-"))? 0xFFFFFFFF:_tstol(stat);

		if(!WriteFile(this->m_DataFile,&header, sizeof(header)-sizeof(TCHAR),&num,0))
			return -1;

		if(!name.IsEmpty())
		{
			if(!WriteFile(this->m_DataFile,name.GetBuffer(), name.GetLength()*sizeof(TCHAR),&num,0))
				return -1;
		}
		if(!oldname.IsEmpty())
		{
			if(!WriteFile(this->m_DataFile,oldname.GetBuffer(), oldname.GetLength()*sizeof(TCHAR),&num,0))
				return -1;
		}

	}
	return 0;
}
Пример #2
0
STDMETHODIMP CCoBroker::HandleRequest(BSTR dstUserId, ULONG dstSvcId, BSTR srcUserId, ULONG srcSvcId, ULONG rId, ULONG rType, ULONG param, BSTR params)
{
TRY_CATCH_COM
	USES_CONVERSION;
	bool handled=false;
	//::MessageBox(NULL,_T("CCoBroker::HandleRequest()"),NULL,0);
	Log.Add(_MESSAGE_,_T("CCoBroker::HandleRequest(%s,0x%x,%s,0x%x,0x%x,0x%x,0x%x,%s)"),_OLE2T(dstUserId),dstSvcId,_OLE2T(srcUserId),srcSvcId,rId,rType,param,_OLE2T(params));
	if(BRT_BROKERPROXY_INFO==rType)
	{
		m_brokerProxyParams.m_pId=param;
		tstring _params=_OLE2T(params);
		m_brokerProxyParams.m_tId=_tstol(_params.c_str());
		tstring::size_type iWnd=_params.find(_T(";;"));
		if(iWnd==tstring::npos||iWnd+2>=_params.size())
			throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),_T("Params value is not recognized; params=[%s]"),_params.c_str());
		m_brokerProxyParams.m_wnd=reinterpret_cast<HWND>(_tstol(_params.c_str()+iWnd+2));
		handled=true;
	}
	else if((BRT_SERVICE|BRT_RESPONSE)==rType&&BSVCIDPDV_JS==srcSvcId)
		handled=HandleRequestService(_OLE2T(dstUserId),dstSvcId,_OLE2T(srcUserId),srcSvcId,rId,rType,param,_OLE2T(params));
	else if(BRT_PROPERTY_LOAD==rType)
	{
		//CBSimplePersistentStorageReg storage(HKEY_CURRENT_USER,DEF_REGISTRY_STORAGE);
		//CBSimplePersistentStorage storage;
		CBSimplePersistentStorageFile storage(LOGS_FOLDER_INSTANCE.GetLogsFolderName()+_T('\\'));
		tstring value=storage.Load(_OLE2T(params));
		OnRequest(_OLE2T(srcUserId),srcSvcId,m_params.m_userId,BSVCIDPDV_BROKER,rId,BRT_PROPERTY_LOAD|BRT_RESPONSE,0/*no metter*/,Format(_T("%s;;%s"),_OLE2T(params),value.c_str()));
		handled=true;
	}
	else if(BRT_PROPERTY_SAVE==rType)
	{
		//CBSimplePersistentStorageReg storage(HKEY_CURRENT_USER,DEF_REGISTRY_STORAGE);
		//CBSimplePersistentStorage storage;
		CBSimplePersistentStorageFile storage(LOGS_FOLDER_INSTANCE.GetLogsFolderName()+_T('\\'));
		tstring _params=_OLE2T(params);
		tstring name,value;
		tstring::size_type iValue=_params.find(_T(";;"));
		if(iValue==tstring::npos||iValue+2>=_params.size())
			throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),_T("Params value is not recognized; params=[%s]"),_params.c_str());
		name=_params.substr(0,iValue);
		value=_params.substr(iValue+2);
		storage.Save(name,value);
		handled=true;
	}
	else if(BRT_BROWSER_MINIMIZE==rType)
	{
		CWindowsMinimizer().MinimizeProcessWindows(m_brokerProxyParams.m_pId);
		handled=true;
	}
	if(!handled)
		OnJSRequest(_OLE2T(dstUserId),dstSvcId,_OLE2T(srcUserId),srcSvcId,rId,rType,param,_OLE2T(params));
CATCH_LOG_COM
}
Пример #3
0
void ReadPostData(Buf &buf)
{
    DWORD dwStep=4096;
    DWORD dwReadThis;
    DWORD dwThisStep;
    DWORD dwTotalBytes;
    Buf   lpszContentLength;

    GetEnv(__T("CONTENT_LENGTH"), lpszContentLength);
    dwTotalBytes = (DWORD)_tstol(lpszContentLength.Get());
    buf.AllocExact(dwTotalBytes + 1);
    buf.Clear();

    do {
        dwThisStep = (DWORD) min(dwTotalBytes-buf.Length(),dwStep);
        dwReadThis = dwThisStep;
        if ( dwThisStep > 0 ) {
            dwReadThis = 0;
            if ( !ReadFile(GetStdHandle(STD_INPUT_HANDLE),buf.GetTail(),dwReadThis,
                                        &dwReadThis,NULL) )
                dwReadThis = 0;
        }
        buf.SetLength(buf.Length() + dwReadThis);

    } while ( (dwReadThis==dwThisStep) && (buf.Length()<dwTotalBytes) );

    *buf.GetTail() = __T('\0');
    lpszContentLength.Free();
}
Пример #4
0
BOOL InjectDllToOne(LPCTSTR szProc, int nMode, LPCTSTR szDllPath)
{
    int                     i = 0, nLen = (int)_tcslen(szProc);
	DWORD                   dwPID = 0;
	HANDLE                  hSnapShot = INVALID_HANDLE_VALUE;
	PROCESSENTRY32          pe;
    BOOL                    bMore = FALSE;

    // check if ProcName or PID
    for(i = 0; i < nLen; i++)
        if( !_istdigit(szProc[i]) )
            break;

    if( i == nLen )     // PID
    {
        dwPID = (DWORD)_tstol(szProc);
        
        if( nMode == INJECTION_MODE )
            InjectDll(dwPID, szDllPath);
        else
            EjectDll(dwPID, szDllPath);
    }
    else                // ProcName
    {
        // Get the snapshot of the system
	    pe.dwSize = sizeof(PROCESSENTRY32);
	    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
        if( hSnapShot == INVALID_HANDLE_VALUE )
        {
            _tprintf(L"InjectDllToOne() : CreateToolhelp32Snapshot() failed!!! [%d]", 
                      GetLastError());
            return FALSE;
        }

	    // find process
	    bMore = Process32First(hSnapShot, &pe);
	    for( ; bMore; bMore = Process32Next(hSnapShot, &pe) )
	    {
		    dwPID = pe.th32ProcessID;

            // 시스템의 안정성을 위해서
            // PID 가 100 보다 작은 시스템 프로세스에 대해서는
            // DLL Injection 을 수행하지 않는다.
		    if( dwPID < 100 )
			    continue;

            if( !_tcsicmp(pe.szExeFile, szProc) )
            {
                if( nMode == INJECTION_MODE )
		            InjectDll(dwPID, szDllPath);
                else
                    EjectDll(dwPID, szDllPath);
            }
	    }

	    CloseHandle(hSnapShot);
    }

    return TRUE;
}
Пример #5
0
//命令处理
LRESULT CGameServerDlg::OnMessageProcessCmdLine(WPARAM wParam, LPARAM lParam)
{
	//变量定义
	CWHCommandLine CommandLine;
	LPCTSTR pszCommandLine=(LPCTSTR)(lParam);

	//房间标识
	TCHAR szSrverID[32]=TEXT("");
	if (CommandLine.SearchCommandItem(pszCommandLine,TEXT("/ServerID:"),szSrverID,CountArray(szSrverID))==true)
	{
		//获取房间
		WORD wServerID=(WORD)(_tstol(szSrverID));

		//启动房间
		if (wServerID!=0)
		{
			//设置变量
			m_bAutoControl=true;

			//启动房间
			StartServerService(wServerID);
		}
	}

	return 0L;
}
Пример #6
0
BOOL COptionTreeItemEdit::GetEditLong(long &lReturn)
{
	// Declare variables
	CString strWindowText;

	// Set blank
	lReturn = 0;

	// Get window text
	if (IsWindow(GetSafeHwnd()))
	{
		GetWindowText(strWindowText);
	}
	else
	{
		return FALSE;
	}

	// First see if we are in numerical mode
	if (GetOption(OT_EDIT_NUMERICAL) == FALSE)
	{
		return FALSE;
	}

	// See if string is numeric
	if (IsStringNumeric(strWindowText) == FALSE)
	{
		return FALSE;
	}

	// Convert string
	lReturn = _tstol(strWindowText);

	return TRUE;
}
Пример #7
0
long IniTool::GetValueLong(CString sSection, CString sKey, long lDefault)
{
	CString strDefault;
	strDefault.Format(_T("%ld"), lDefault);
	CString sValue = this->GetValueString(sSection, sKey, strDefault);
	return _tstol(sValue);
}
//JP proxy configuration test
void CPPgWebcachesettings::OnBnClickedTestProxy()
{
	if (thePrefs.IsWebCacheTestPossible())
	{
		if (!thePrefs.expectingWebCachePing)
		{
			//get webcache name from IDC_webcacheName
			CString cur_WebCacheName;
			GetDlgItem(IDC_webcacheName)->GetWindowText(cur_WebCacheName);
			if (cur_WebCacheName.GetLength() > 15 && cur_WebCacheName.Left(12) == "transparent@") //doesn't work for transparent proxies
			{
				AfxMessageBox(_T("Proxy Test can not test Transparent proxies. Test Canceled!"));
				return;
			}
			//get webcache port from IDC_webcachePort
			CString buffer;			
			GetDlgItem(IDC_webcachePort)->GetWindowText(buffer);
			uint16 cur_WebCachePort = (uint16)_tstol(buffer);
			if (PingviaProxy(cur_WebCacheName, cur_WebCachePort))
			{
				thePrefs.WebCachePingSendTime = ::GetTickCount();
				thePrefs.expectingWebCachePing = true;
				AfxMessageBox(_T("Performing Proxy Test! Please check the log in the serverwindow for the results!"));
			}
			else
				AfxMessageBox(_T("Proxy Test Error!"));
		}
		else 
			AfxMessageBox(_T("No New Test Started. There is already a Test in progress"));
	}
	else
		AfxMessageBox(_T("No Test Performed. Not all requirements met.\n Requirements:\n1. You have to be connected to a server\n2. You need to have a valid public IP\n3. You need to have a high ID\n4. Test does not work if you have too many open connections"));
}
Пример #9
0
LONG CCmdLineParser::GetLongVal(LPCTSTR sKey) const
{
	CValsMap::const_iterator it = findKey(sKey);
	if (it == m_valueMap.end())
		return 0;
	return _tstol(it->second.c_str());
}
Пример #10
0
void CNumberEdit::OnChange() 
{
	CString	strNew;

	GetWindowText( strNew );

	if( m_nType == ntDouble )
	{
		double	dVal = _tstof( strNew );

		if( dVal >= m_dMin && dVal <= m_dMax )
			return;
	}
	else
	{
		long		lVal = _tstol( strNew );

		if( lVal >= m_lMin && lVal <= m_lMax )
			return;
	}

	// Ausserhalb des Wertebereichs!
	// Alten Wert wiederherstellen
	SetWindowText( m_strText );
	SetSel( m_nSelStart, m_nSelEnd );

	MessageBeep( MB_ICONSTOP );
}
Пример #11
0
BOOL CSettingsAdvanced::OnApply()
{
	int i = 0;
	while (settings[i].type != SettingTypeNone)
	{
		CString	sValue = m_ListCtrl.GetItemText(i, 0);
		switch (settings[i].type)
		{
		case SettingTypeBoolean:
			{
				CRegDWORD s(_T("Software\\TortoiseGit\\") + settings[i].sName, settings[i].def.b);
				if (sValue.IsEmpty())
					s.removeValue();
				else
				{
					DWORD newValue = sValue.Compare(_T("true")) == 0;
					if (DWORD(s) != newValue)
					{
						s = newValue;
					}
				}
			}
			break;
		case SettingTypeNumber:
			{
				CRegDWORD s(_T("Software\\TortoiseGit\\") + settings[i].sName, settings[i].def.l);
				if (DWORD(_tstol(sValue)) != DWORD(s))
				{
					s = _tstol(sValue);
				}
			}
			break;
		case SettingTypeString:
			{
				CRegString s(_T("Software\\TortoiseGit\\") + settings[i].sName, settings[i].def.s);
				if (sValue.Compare(CString(s)))
				{
					s = sValue;
				}
			}
		}

		i++;
	}

	return ISettingsPropPage::OnApply();
}
Пример #12
0
BOOL CConfigLoader::GetValue( CString szSection, CString szKey, int &nValue )
{
	CString szValue;
	nValue = 0;
	BOOL bRet = GetValue( szSection, szKey, szValue );
	nValue = _tstol(szValue);
	return bRet;
}
Пример #13
0
UINT GetNextDotInt(LPCWSTR& p)
{
  UINT v = _tstol(p);
  p = wcschr(p, L'.');
  if (p)
    ++p;
  return v;
}
Пример #14
0
void CConfigDlg::OnBnClickedOk()
{
	SaveAlarmsToReg();

    CComboBox *playlists = (CComboBox*)GetDlgItem( IDC_PLAYLISTS );
    int pl = playlists->GetCurSel();
    if( pl != -1 )
    {
        long id[4];
        m_plids[pl].toBin( (void*)id );
        binary b;
        b.data = std::string( (char*)id, 4 * sizeof(long) );
        m_reg[_T("Playlist")] = b;
        m_reg[_T("PlaylistName")] = m_playlists[pl];
    }

    CButton *shuffle = (CButton*)GetDlgItem( IDC_CHECK_SHUFFLE );
    m_reg[_T("Shuffle")] = ( shuffle->GetCheck() == BST_CHECKED ) ? true : false;

	m_reg[_T("IncreaseVolume")] = ( m_increase.GetCheck() == BST_CHECKED ) ? true : false;
	m_reg[_T("IncreaseTime")] = m_secondsSlider.GetPos();

    m_reg[_T("MinimizeOnAlarm")] = ( m_minimize.GetCheck() == BST_CHECKED ) ? true : false;

    m_reg[_T("MuteOnReturn")] = ( ((CButton*)GetDlgItem(IDC_DO_MUTE))->GetCheck() == BST_CHECKED ) ? true : false;

    m_reg[_T("EnableSnooze")] = ( ((CButton*)GetDlgItem(IDC_ENABLE_SNOOZE))->GetCheck() == BST_CHECKED ) ? true : false;
    TCHAR tm[20];
    GetDlgItem(IDC_SNOOZE_TIME)->GetWindowText( tm, 19 );
    long st = 0xff & _tstol( tm );
    if( st < 1 ) st = 1; if( st > 60 ) st = 60;
    m_reg[_T("SnoozeTime")] = st;

    RegMap t( HKEY_CURRENT_USER );
    t = t[_T("Software")][_T("Microsoft")][_T("Windows")][_T("CurrentVersion")][_T("Run")];
    CButton *runonstartup = (CButton*)GetDlgItem( IDC_STARTUP_CHECK );
    if( runonstartup->GetCheck() == BST_CHECKED )
    {
        TCHAR f[MAX_PATH];
        GetModuleFileName( NULL, f, MAX_PATH );
        t[_T("iSnooze")] = f;
    }
    else
    {
        if( t.has_key( _T("iSnooze") ) )
            t.deleteValue( _T("iSnooze") );
    }

    m_reg[_T("BeenRun")] = true;

    ::PostMessage( m_parentHwnd, WM_CONFIG_UPDATE, 0, 0 );

    OnOK();
}
Пример #15
0
void CWebWindow::OnCmdSendPromo(long longProductID, LPCTSTR bstrSubject, LPCTSTR bstrMessage, LPCTSTR bstrRecipients,long *pHandle)
{
//    ::CoInitialize(NULL);
	m_SendStatus = DS_NONE;
///	if(::IsWindow(pMessageParent->GetSafeHwnd()))
//		if(!((CMainDlg*)pMessageParent)->m_MessengerBar.ConnectEnable())
//		{
//			/// WriteMessage Dialog About you OffLine...
//			pMessageParent->SendMessage(WM_SHOWMESSAGEBOX,(WPARAM)IDS_YOUOFFLINE);
//			return;
//		}
	try
	{	
		ISessionPtr pSession = NULL;
		pSession = theNet2.GetSession();
		IPromoPtr pPromo = pSession->CreatePromo();
		pPromo->PutPID(_bstr_t(GUIDGen()));
		pPromo->PutBody(_bstr_t(bstrMessage));
		pPromo->PutProduct_ID(longProductID);
		pPromo->PutSubject(_bstr_t(bstrSubject)) ;
		IUsersPtr pUsers = pPromo->GetRecipients();
		CString str = bstrRecipients;
		while(!str.IsEmpty())
		{
			IUserPtr pUser = pUsers->AddUser();
			long UserId = _tstol((LPCTSTR)str);
			pUser->PutValue("@id",UserId);
			int FindPos = str.Find(',');
			if(FindPos==-1) break;
			str = str.Mid(FindPos + 1);
		}
		
		theNet2.LockTranslator();
		try
		{
			m_Handle = pPromo->Send();
			if(m_Handle)
				theNet2.AddToTranslator(m_Handle,this->GetSafeHwnd());
			m_SendStatus = DS_SEND;
			(*pHandle) = m_Handle;
		}
		catch(...)
		{
		}
		theNet2.UnlockTranslator();
	}
	catch(...)
	{
	}
	
//	::CoUninitialize();
}
Пример #16
0
int _tmain(int argc,TCHAR *argv[]) {
	if (argc != 3) {
		_tprintf(L"USAGE:%s pid dll_path\n",argv[0]);
		return 1;
	}
	// inject dll
	if (InjectDll((DWORD)_tstol(argv[1]), argv[2])) 
		_tprintf(L"InjectDll(\"%s\") success!\n",argv[2]);
	else
		_tprintf(L"InjectDll(\"%s\") failed!\n", argv[2]);
	
	return 0;
}
Пример #17
0
int _tmain(int argc, TCHAR *argv[])
{
    if( argc != 3)
    {
        _tprintf(L"USAGE : %s <pid> <dll_path>\n", argv[0]);
        return 1;
    }

    // change privilege
    if( !SetPrivilege(SE_DEBUG_NAME, TRUE) )
        return 1;

    // inject dll
    if( InjectDll((DWORD)_tstol(argv[1]), argv[2]) )
        _tprintf(L"InjectDll(\"%s\") success!!!\n", argv[2]);
    else
        _tprintf(L"InjectDll(\"%s\") failed!!!\n", argv[2]);

    return 0;
}
Пример #18
0
void CHardLimit::LoadSettings(CPartFile* file)
{
	SettingsList daten;
	CString datafilepath;
	datafilepath.Format(_T("%s\\%s\\%s.ahl"), thePrefs.GetTempDir(),_T("Extra Lists"),file->GetPartMetFileName());

	CString strLine;
	CStdioFile f;
	if (!f.Open(datafilepath, CFile::modeReadWrite | CFile::typeText))
		return;
	while(f.ReadString(strLine))
	{
		if (strLine.GetAt(0) == '#')
			continue;
		int pos = strLine.Find(_T('\0'));
		if (pos == -1)
			continue;
		CString strData = strLine.Left(pos);
		CSettingsData* newdata = new CSettingsData(_tstol(strData));
		daten.AddTail(newdata);
	}
	f.Close();

	if(daten.GetCount() < 1){
		while (!daten.IsEmpty())
			delete daten.RemoveHead();
		return;
	}

	POSITION pos = daten.GetHeadPosition();
	if(!pos)
		return;

	file->SetMaxSourcesPerFile(((CSettingsData*)daten.GetAt(pos))->dwData);
	daten.GetNext(pos);

	while (!daten.IsEmpty())
		delete daten.RemoveHead();

}
Пример #19
0
int port_insert_custom (int inputmap_port, int devicetype, DWORD flags, const TCHAR *custom)
{
	const TCHAR *p = custom;
	int mode, *events, *axistable;
	int max, evtnum;
	int kb;
	const TCHAR **eventorder;

	eventorder = getcustomeventorder (&devicetype);
	if (!eventorder)
		return FALSE;

	kb = inputdevice_get_device_total (IDTYPE_JOYSTICK) + inputdevice_get_device_total (IDTYPE_MOUSE);

	inputdevice_updateconfig_internal (&changed_prefs);
	inputdevice_compa_prepare_custom (&changed_prefs, inputmap_port, devicetype);
	inputdevice_updateconfig_internal (&changed_prefs);
	max = inputdevice_get_compatibility_input (&changed_prefs, inputmap_port, &mode, &events, &axistable);
	write_log (_T("custom='%s' max=%d port=%d dt=%d kb=%d kbnum=%d\n"), custom, max, inputmap_port, devicetype, kb, inputdevice_get_device_total (IDTYPE_KEYBOARD));
	if (!max)
		return FALSE;

	while (p && p[0]) {
		int idx = -1, kc = -1;
		int flags = 0;
		int eventlen;

		const TCHAR *p2 = _tcschr (p, '=');
		if (!p2)
			break;
		const TCHAR *p4 = p;
		eventlen = -1;
		for (;;) {
			const TCHAR *p3 = _tcschr (p4, '.');
			if (!p3 || p3 >= p2) {
				p3 = NULL;
				if (eventlen < 0)
					eventlen = p2 - p;
				break;
			}
			if (eventlen < 0)
				eventlen = p3 - p;
			if (!_tcsnicmp (p3 + 1, L"autorepeat", 10))
				flags |= IDEV_MAPPED_AUTOFIRE_SET;
			p4 = p3 + 1;
		}
		
		for (int i = 0; eventorder[i]; i++) {
			if (_tcslen (eventorder[i]) == eventlen && !_tcsncmp (p, eventorder[i], eventlen)) {
				idx = i;
				break;
			}
		}
		p2++;
		if (p2[0] == '0' && (p2[1] == 'x' || p2[1] == 'X'))
			kc = _tcstol (p2 + 2, NULL, 16);
		else
			kc = _tstol (p2);
		p = _tcschr (p2, ' ');
		if (p)
			p++;

		if (idx < 0)
			continue;
		if (kc < 0)
			continue;

		evtnum = events[idx];

		write_log (_T("kb=%d evt=%d kc=%02x flags=%08x\n"), kb, evtnum, kc, flags);

		for (int j = 0; j < inputdevice_get_device_total (IDTYPE_KEYBOARD); j++) {
			int wdnum = -1;
			for (int i = 0; i < inputdevicefunc_keyboard.get_widget_num (j); i++) {
				uae_u32 kc2 = 0;
				inputdevicefunc_keyboard.get_widget_type (j, i, NULL, &kc2);
				if (kc == kc2) {
					wdnum = i;
					break;
				}
			}
			if (wdnum >= 0) {
				//write_log (_T("kb=%d (%s) wdnum=%d\n"), j, inputdevicefunc_keyboard.get_friendlyname (j), wdnum);
				inputdevice_set_gameports_mapping (&changed_prefs, kb + j, wdnum, evtnum, flags, inputmap_port);
				inputdevice_set_gameports_mapping (&currprefs, kb + j, wdnum, evtnum, flags, inputmap_port);
			} else {
				write_log (_T("kb=%d (%): keycode %02x not found!\n"), j, inputdevicefunc_keyboard.get_friendlyname (j), kc);
			}
		}
	}

	inputdevice_updateconfig_internal (&changed_prefs);
	inputdevice_updateconfig (&currprefs);
	return TRUE;
}
Пример #20
0
//////////////////////////////////////////////////////////////////////////
//Purpose: Searches for a resource dll in sub directories using a search order
//		   based on szPath - a directory to search res dll below.
//		   see example at .
//Input: szDllName - the string resource dll name to search. Ex: ToolUI.dll 
//Output: TCHAR *szPathOut - filled with absolute path to dll, if found.
//		  size_t sizeInCharacters - buffer size in characters
//Returns: Success (found dll) - S_OK , Failure - E_FAIL or E_UNEXPECTED
//////////////////////////////////////////////////////////////////////////
HRESULT LoadUILibrary(LPCTSTR szPath, LPCTSTR szDllName, DWORD dwExFlags, 
                      HINSTANCE *phinstOut, LPTSTR szFullPathOut,size_t sizeInCharacters,
                      LCID *plcidOut)
{
    TCHAR szPathTemp[_MAX_PATH + 1] = _T("");
    HRESULT hr = E_FAIL;
    LCID lcidFound = (LCID)-1;
    size_t nPathEnd = 0;

    // Gotta have this stuff!
	if (szPath==NULL || *szPath == '\0')	   
	{ 
		return E_POINTER; 
	}

    if (szDllName==NULL || *szDllName == '\0') 
	{ 
		return E_POINTER; 
	}

    if (!szPath || !*szPath || !szDllName || !*szDllName)
	{
        return E_INVALIDARG;
	}

    if (phinstOut != NULL)
    {
        *phinstOut = NULL;
    }

    szPathTemp[_MAX_PATH-1] = L'\0';

    // Add \ to the end if necessary
    _tcsncpy_s(szPathTemp,_countof(szPathTemp), szPath, _MAX_PATH-1);
    if (szPathTemp[_TCSNLEN(szPathTemp, _MAX_PATH-1) - 1] != L'\\')
    {
        _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("\\"), PATHLEFT(szPathTemp));
    }

    // Check if given path even exists
    if (GetFileAttributes(szPathTemp) == 0xFFFFFFFF)
	{
        return E_FAIL;
	}

    nPathEnd = _TCSNLEN(szPathTemp, _MAX_PATH-1);
    
    {	        
		LANGID langid=0;
		if (FAILED(GetUserDefaultUILanguageLegacyCompat(&langid)))
		{
			return E_UNEXPECTED;
		}
        const LCID lcidUser = MAKELCID(langid, SORT_DEFAULT);
        
        LCID rglcid[3];
        rglcid[0] = lcidUser;
        rglcid[1] = MAKELCID(MAKELANGID(PRIMARYLANGID(lcidUser), SUBLANG_DEFAULT), SORTIDFROMLCID(lcidUser));
        rglcid[2] = 0x409;
        for (int i = 0; i < _countof(rglcid); i++)
        {
            TCHAR szNumBuf[10];
            
            // Check if it's the same as any LCID already checked,
            // which is very possible
			int n = 0;
            for (n = 0; n < i; n++)
            {
                if (rglcid[n] == rglcid[i])
                    break;
            }

            if (n < i)
			{
                continue;
			}
            
            szPathTemp[nPathEnd] = L'\0';
			_itot_s(rglcid[i], szNumBuf,_countof(szNumBuf), 10);
            _tcsncat_s(szPathTemp, _countof(szPathTemp),szNumBuf , PATHLEFT(szPathTemp));
            _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("\\"), PATHLEFT(szPathTemp));
            _tcsncat_s(szPathTemp,_countof(szPathTemp), szDllName, PATHLEFT(szPathTemp));

            if (GetFileAttributes(szPathTemp) != 0xFFFFFFFF)
            {
                lcidFound = rglcid[i];

                hr = S_OK;
                goto Done;
            }
        }
    }

    // None of the default choices exists, so now look for the dll in a folder below
	//the given path (szPath)
    {        
        szPathTemp[nPathEnd] = L'\0';
        _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("*.*"), PATHLEFT(szPathTemp));

		WIN32_FIND_DATA wfdw;
        HANDLE hDirs = FindFirstFile(szPathTemp, &wfdw);
        nPathEnd = _TCSNLEN(szPathTemp, _MAX_PATH-1)-3;
        if (hDirs != INVALID_HANDLE_VALUE)
        {
            while (FindNextFile(hDirs, &wfdw))
            {
                // We are only interested in directories, since at this level, that should
                // be the only thing in this directory, i.e, LCID sub dirs
                if (wfdw.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    // Skip current and previous dirs, "." and ".."
                    if (!_tcscmp(wfdw.cFileName, _T(".")) || !_tcscmp(wfdw.cFileName, _T("..")))
                        continue;

                    // Does this dir have a copy of the dll?
                    szPathTemp[nPathEnd] = L'\0';
                    _tcsncat_s(szPathTemp,_countof(szPathTemp), wfdw.cFileName, PATHLEFT(szPathTemp));
                    _tcsncat_s(szPathTemp,_countof(szPathTemp), _T("\\"), PATHLEFT(szPathTemp));
                    _tcsncat_s(szPathTemp,_countof(szPathTemp), szDllName, PATHLEFT(szPathTemp));

                    if (GetFileAttributes(szPathTemp) != 0xFFFFFFFF)
                    {
                        // Got it!
                        lcidFound = (LCID)_tstol(wfdw.cFileName);

                        hr = S_OK;
                        break;
                    }
                }
            }

            FindClose(hDirs);
        }
    }

Done:
    if (SUCCEEDED(hr))
    {
        // Set the default LCID
        if (plcidOut)
        {
			if (lcidFound == (LCID)-1) 
			{ 
				return E_UNEXPECTED; 
			}
            *plcidOut = lcidFound;
        }

        // Finally, attempt to load the library
        // Beware!  A dll loaded with LOAD_LIBRARY_AS_DATAFILE won't
        // let you use LoadIcon and things like that (only general calls like
        // FindResource and LoadResource).
        if (phinstOut != NULL)
        {
            *phinstOut = LoadLibraryEx(szPathTemp, NULL, dwExFlags);
            hr = (*phinstOut) ? S_OK : E_FAIL;
        }
        if ( szFullPathOut )
		{
            _tcsncpy_s(szFullPathOut,sizeInCharacters, szPathTemp, _MAX_PATH-1);
		}
    }
 
    return hr;
}
Пример #21
0
LRESULT CMainDlg::OnBnClickedAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
    CWindow wndUrl = GetDlgItem(IDC_EDIT_URL);
    wndUrl.GetWindowText(strUrl);
    BOOL bDone = FALSE;
    HINTERNET hSession = NULL;
    HINTERNET hConnect = NULL;
    HINTERNET hRequest = NULL;

    do 
    {
        std::wstring strUserAgentW= _T("Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
        hSession = ::InternetOpen(strUserAgentW.c_str(), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
        if (hSession)
        {

            TCHAR szDomain[MAX_PATH];
            INTERNET_PORT nServerPort = 0;
            if (!GetDomainAndPortFromUrl(strUrl, szDomain, nServerPort))
            {
                bDone = FALSE;
                break;
            }

            hConnect = InternetConnect(hSession,
                szDomain,
                nServerPort,
                NULL,
                NULL,
                INTERNET_SERVICE_HTTP,
                0,
                0);
            if (hConnect)
            {
                DWORD dwOpenRequestFlags = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP |  
                    INTERNET_FLAG_KEEP_CONNECTION |  
                    INTERNET_FLAG_NO_AUTH |  
                    INTERNET_FLAG_NO_UI |
                    INTERNET_FLAG_NO_COOKIES |
                    INTERNET_FLAG_IGNORE_CERT_CN_INVALID|
                    INTERNET_FLAG_IGNORE_CERT_DATE_INVALID; 
                if (nServerPort == INTERNET_DEFAULT_HTTPS_PORT)
                {
                    dwOpenRequestFlags |= INTERNET_FLAG_SECURE;
                }


                int nPos = strUrl.Find(szDomain, 0);
                strUrl = strUrl.Right(strUrl.GetLength() - nPos - wcslen(szDomain));

                hRequest = HttpOpenRequest(hConnect, NULL, strUrl, NULL,  
                    NULL, NULL,  
                    dwOpenRequestFlags, 0);
                LPCTSTR strContentType = L"Accept-Language:zh-CN";
                CString strHeader(strContentType);
                //strHeader.Format(strContentType, m_strCookies); 
                HttpAddRequestHeaders(hRequest,
                    strHeader,
                    strHeader.GetLength(),
                    HTTP_ADDREQ_FLAG_ADD|HTTP_ADDREQ_FLAG_REPLACE);  

                if (hRequest)
                {
                    BOOL bResult = HttpSendRequest(hRequest, NULL, 0, NULL, 0);  
                    if ( ! bResult && GetLastError() == ERROR_INTERNET_INVALID_CA )   
                    {  
                        DWORD dwFlags;  
                        DWORD dwBuffLen = sizeof(dwFlags);  
                        InternetQueryOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);  
                        dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;  
                        InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags) ); 
                        bResult = HttpSendRequest(hRequest, NULL, 0, NULL, 0); 
                    }
                    if (bResult)
                    {
                        DWORD dwRetCode = 0;
                        WCHAR szRetCode[64] = {0};
                        DWORD dwSize = 64;
                        DWORD dwIndex = 0;
                        ::HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_CODE ,&szRetCode, &dwSize, &dwIndex);
                        dwRetCode = _tstol(szRetCode);
                        if (dwRetCode < HTTP_STATUS_BAD_REQUEST )
                        {
                            //获取文件名称
                            TCHAR szContentDisposition[512] = {0};
                            DWORD dwContentDispositionSize = 512;
                            dwIndex = 0;
                            if (::HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_DISPOSITION, szContentDisposition, &dwContentDispositionSize, &dwIndex))
                            {
                                //attachment; filename="a_log.zip"
                                CString strDisposistion = szContentDisposition;
                                GetDlgItem(IDC_EDIT_FILENAME).SetWindowText(strDisposistion);   
                                bDone = TRUE;
                            }
                        }

                        else
                        {
                            bDone = FALSE;
                            break;
                        }
                    }
                }
                else
                {
                    bDone =FALSE;
                    break;
                }
            }
            else
            {
                bDone = FALSE;
                break;
            }
        }
    } while (0);

    if (hRequest)
    {
        ::InternetCloseHandle(hRequest);
    }
    if (hConnect)
    {
        ::InternetCloseHandle(hConnect);
    }
    if (hSession)
    {
        ::InternetCloseHandle(hSession);
    }

    return 0;
}
BOOL CPPgWebcachesettings::OnApply()
{
	bool bRestartApp = false;
	CString buffer;

	// set thePrefs.webcacheName
	if(GetDlgItem(IDC_webcacheName)->GetWindowTextLength())
	{
		CString nNewwebcache;
		GetDlgItem(IDC_webcacheName)->GetWindowText(nNewwebcache);
		if (thePrefs.webcacheName != nNewwebcache){
			thePrefs.webcacheName = nNewwebcache;
			bRestartApp = true;
		}
	}

	// set thePrefs.webcachePort
	if(GetDlgItem(IDC_webcachePort)->GetWindowTextLength())
	{
		GetDlgItem(IDC_webcachePort)->GetWindowText(buffer);
		uint16 nNewPort = (uint16)_tstol(buffer);
		if (!nNewPort) nNewPort=0;
		if (nNewPort != thePrefs.webcachePort){
			thePrefs.webcachePort = nNewPort;
		}
	}
	
	// set thePrefs.webcacheEnabled
	thePrefs.webcacheEnabled = IsDlgButtonChecked(IDC_Activatewebcachedownloads)!=0;
	
	
	// set thePrefs.webcacheBlockLimit
	if(GetDlgItem(IDC_BLOCKS)->GetWindowTextLength())
	{
		GetDlgItem(IDC_BLOCKS)->GetWindowText(buffer);
		uint16 nNewBlocks = (uint16)_tstol(buffer);
		if ((!nNewBlocks) || (nNewBlocks > 50000) || (nNewBlocks < 0)) nNewBlocks=0;
		if (nNewBlocks != thePrefs.GetWebCacheBlockLimit()){
			thePrefs.SetWebCacheBlockLimit(nNewBlocks);
		}
	}
	
	// set thePrefs.WebCacheExtraTimeout
	thePrefs.SetWebCacheExtraTimeout(IsDlgButtonChecked(IDC_EXTRATIMEOUT) != 0);

	// set thePrefs.WebCacheCachesLocalTraffic
	uint8 cachestraffic;
	cachestraffic = (uint8)IsDlgButtonChecked(IDC_LOCALTRAFFIC);
	if (cachestraffic == 1) thePrefs.SetWebCacheCachesLocalTraffic(0);
	else thePrefs.SetWebCacheCachesLocalTraffic(1);

	// set thePrefs.PersistentConnectionsForProxyDownloads
	thePrefs.PersistentConnectionsForProxyDownloads = IsDlgButtonChecked(IDC_PERSISTENT_PROXY_CONNS)!=0;

	// set thePrefs.WCAutoupdate
	thePrefs.WCAutoupdate = IsDlgButtonChecked(IDC_UPDATE_WCSETTINGS)!=0;

	SetModified(FALSE);
	LoadSettings();

	if (bRestartApp)
	{
		AfxMessageBox(GetResString(IDS_SETTINGCHANGED_RESTART));
		thePrefs.WebCacheDisabledThisSession = true;
	}
	return CPropertyPage::OnApply();
}
void CSettingsSaver::ImportOldSettings(CPartFile* file)
{
	SettingsList daten;
	CString datafilepath;
	datafilepath.Format(_T("%s\\%s\\%s.sivka"), file->GetTempPath(), _T("Extra Lists"), file->GetPartMetFileName());

	CString strLine;
	CStdioFile f;
	if (!f.Open(datafilepath, CFile::modeReadWrite | CFile::typeText))
		return;
	while(f.ReadString(strLine))
	{
		if (strLine.GetAt(0) == _T('#'))
			continue;
		int pos = strLine.Find(_T('\n'));
		if (pos == -1)
			continue;
		CString strData = strLine.Left(pos);
		CSettingsData* newdata = new CSettingsData(_tstol(strData));
		daten.AddTail(newdata);
	}
	f.Close();

	POSITION pos = daten.GetHeadPosition();
	if(!pos)
		return;

	if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1)
	{
		file->SetEnableAutoDropNNS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0);
	}
	else
		file->SetEnableAutoDropNNS(thePrefs.GetEnableAutoDropNNSDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000)
		file->SetAutoNNS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData);
	else
		file->SetAutoNNS_Timer(thePrefs.GetAutoNNS_TimerDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100)
		file->SetMaxRemoveNNSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData);
	else
		file->SetMaxRemoveNNSLimit(thePrefs.GetMaxRemoveNNSLimitDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1)
	{
		file->SetEnableAutoDropFQS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0);
	}
	else
		file->SetEnableAutoDropFQS(thePrefs.GetEnableAutoDropFQSDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000)
		file->SetAutoFQS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData);
	else
		file->SetAutoFQS_Timer(thePrefs.GetAutoFQS_TimerDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100)
		file->SetMaxRemoveFQSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData);
	else
		file->SetMaxRemoveFQSLimit(thePrefs.GetMaxRemoveFQSLimitDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1)
	{
		file->SetEnableAutoDropQRS((((CSettingsData*)daten.GetAt(pos))->dwData)!=0);
	}
	else
		file->SetEnableAutoDropQRS(thePrefs.GetEnableAutoDropQRSDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 0 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 60000)
		file->SetAutoHQRS_Timer(((CSettingsData*)daten.GetAt(pos))->dwData);
	else
		file->SetAutoHQRS_Timer(thePrefs.GetAutoHQRS_TimerDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 1000 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 10000)
		file->SetMaxRemoveQRS((uint16)((CSettingsData*)daten.GetAt(pos))->dwData);
	else
		file->SetMaxRemoveQRS(thePrefs.GetMaxRemoveQRSDefault());

	daten.GetNext(pos);
	if( ((CSettingsData*)daten.GetAt(pos))->dwData >= 50 && ((CSettingsData*)daten.GetAt(pos))->dwData <= 100)
		file->SetMaxRemoveQRSLimit((uint16)((CSettingsData*)daten.GetAt(pos))->dwData);
	else
		file->SetMaxRemoveQRSLimit(thePrefs.GetMaxRemoveQRSLimitDefault());

	if(daten.GetCount() > 10) // emulate StulleMule <= v2.2 files
	{
		// ==> Global Source Limit (customize for files) - Stulle
		daten.GetNext(pos);
		if( ((CSettingsData*)daten.GetAt(pos))->dwData == 0 || ((CSettingsData*)daten.GetAt(pos))->dwData == 1)
		{
			file->SetGlobalHL((((CSettingsData*)daten.GetAt(pos))->dwData)!=0);
		}
		else
			file->SetGlobalHL(thePrefs.GetGlobalHlDefault());
		// <== Global Source Limit (customize for files) - Stulle
	}
	else
		file->SetGlobalHL(thePrefs.GetGlobalHlDefault());

	while (!daten.IsEmpty()) 
		delete daten.RemoveHead();

	if (_tremove(datafilepath)) if (errno != ENOENT)
		AddLogLine(true, _T("Failed to delete %s, you will need to do this manually"), datafilepath);
}
Пример #24
0
void CDVBChannel::FromString(CString strValue)
{
    int i = 0;
    int nVersion;

    nVersion        = _tstol(strValue.Tokenize(_T("|"), i));
    m_strName       = strValue.Tokenize(_T("|"), i);
    m_ulFrequency   = _tstol(strValue.Tokenize(_T("|"), i));
    m_nPrefNumber   = _tstol(strValue.Tokenize(_T("|"), i));
    m_nOriginNumber = _tstol(strValue.Tokenize(_T("|"), i));
    if (nVersion > FORMAT_VERSION_0) {
        m_bEncrypted = !!_tstol(strValue.Tokenize(_T("|"), i));
    }
    if (nVersion > FORMAT_VERSION_1) {
        m_bNowNextFlag = !!_tstol(strValue.Tokenize(_T("|"), i));
    }
    m_ulONID      = _tstol(strValue.Tokenize(_T("|"), i));
    m_ulTSID      = _tstol(strValue.Tokenize(_T("|"), i));
    m_ulSID       = _tstol(strValue.Tokenize(_T("|"), i));
    m_ulPMT       = _tstol(strValue.Tokenize(_T("|"), i));
    m_ulPCR       = _tstol(strValue.Tokenize(_T("|"), i));
    m_ulVideoPID  = _tstol(strValue.Tokenize(_T("|"), i));
    m_nVideoType  = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
    m_nAudioCount = _tstol(strValue.Tokenize(_T("|"), i));
    if (nVersion > FORMAT_VERSION_1) {
        m_nDefaultAudio = _tstol(strValue.Tokenize(_T("|"), i));
    }
    m_nSubtitleCount = _tstol(strValue.Tokenize(_T("|"), i));

    for (int j = 0; j < m_nAudioCount; j++) {
        m_Audios[j].PID = _tstol(strValue.Tokenize(_T("|"), i));
        m_Audios[j].Type = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
        m_Audios[j].PesType = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
        m_Audios[j].Language = strValue.Tokenize(_T("|"), i);
    }

    for (int j = 0; j < m_nSubtitleCount; j++) {
        m_Subtitles[j].PID = _tstol(strValue.Tokenize(_T("|"), i));
        m_Subtitles[j].Type = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
        m_Subtitles[j].PesType = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
        m_Subtitles[j].Language = strValue.Tokenize(_T("|"), i);
    }
}
Пример #25
0
bool CDVBChannel::FromString(CString strValue)
{
    try {
        int i = 0;

        int nVersion    = _tstol(strValue.Tokenize(_T("|"), i));
        // We don't try to parse versions newer than the one we support
        if (nVersion > FORMAT_VERSION_CURRENT) {
            return false;
        }

        m_strName       = strValue.Tokenize(_T("|"), i);
        m_ulFrequency   = _tstol(strValue.Tokenize(_T("|"), i));
        m_nPrefNumber   = _tstol(strValue.Tokenize(_T("|"), i));
        m_nOriginNumber = _tstol(strValue.Tokenize(_T("|"), i));
        if (nVersion > FORMAT_VERSION_0) {
            m_bEncrypted = !!_tstol(strValue.Tokenize(_T("|"), i));
        }
        if (nVersion > FORMAT_VERSION_1) {
            m_bNowNextFlag = !!_tstol(strValue.Tokenize(_T("|"), i));
        }
        m_ulONID      = _tstol(strValue.Tokenize(_T("|"), i));
        m_ulTSID      = _tstol(strValue.Tokenize(_T("|"), i));
        m_ulSID       = _tstol(strValue.Tokenize(_T("|"), i));
        m_ulPMT       = _tstol(strValue.Tokenize(_T("|"), i));
        m_ulPCR       = _tstol(strValue.Tokenize(_T("|"), i));
        m_ulVideoPID  = _tstol(strValue.Tokenize(_T("|"), i));
        m_nVideoType  = (DVB_STREAM_TYPE) _tstol(strValue.Tokenize(_T("|"), i));
        m_nAudioCount = _tstol(strValue.Tokenize(_T("|"), i));
        if (nVersion > FORMAT_VERSION_1) {
            m_nDefaultAudio = _tstol(strValue.Tokenize(_T("|"), i));
        }
        m_nSubtitleCount = _tstol(strValue.Tokenize(_T("|"), i));
        if (nVersion > FORMAT_VERSION_2) {
            m_nDefaultSubtitle = _tstol(strValue.Tokenize(_T("|"), i));
        }

        for (int j = 0; j < m_nAudioCount; j++) {
            m_Audios[j].PID      = _tstol(strValue.Tokenize(_T("|"), i));
            m_Audios[j].Type     = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
            m_Audios[j].PesType  = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
            m_Audios[j].Language = strValue.Tokenize(_T("|"), i);
        }

        for (int j = 0; j < m_nSubtitleCount; j++) {
            m_Subtitles[j].PID      = _tstol(strValue.Tokenize(_T("|"), i));
            m_Subtitles[j].Type     = (DVB_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
            m_Subtitles[j].PesType  = (PES_STREAM_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
            m_Subtitles[j].Language = strValue.Tokenize(_T("|"), i);
        }

        if (nVersion > FORMAT_VERSION_3) {
            m_nVideoFps    = (DVB_FPS_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
            m_nVideoChroma = (DVB_CHROMA_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
            m_nVideoWidth  = _tstol(strValue.Tokenize(_T("|"), i));
            m_nVideoHeight = _tstol(strValue.Tokenize(_T("|"), i));
            m_nVideoAR     = (DVB_AspectRatio_TYPE)_tstol(strValue.Tokenize(_T("|"), i));
        }
    } catch (CException* e) {
        // The tokenisation can fail if the input string was invalid
        TRACE(_T("Failed to parse a DVB channel from string \"%s\""), strValue);
        e->Delete();
        return false;
    }

    return true;
}
Пример #26
0
Int64	cstring2Int64(LPCTSTR buff)
{
	return _tstol(buff);
}
Пример #27
0
LRESULT CMainFrame::OnReadGroup( WPARAM wParam, LPARAM lParam )
{
	int nGroupCount = 0;
	CUserDatas* lpUserDatas = ((CIFuzzMakerDoc*)GetActiveDocument())->GetUserDatas();

	lpUserDatas->GetPatternGroupDataArray().RemoveAllWithDelete();

	CPatternGroupInfoLoader PatternGroupInfoLoader;
	CPatternGroupInfoArray PatternGroupInfoArray;
	if( !PatternGroupInfoLoader.LoadText( lpUserDatas->GetGroupFileName(), &PatternGroupInfoArray ) )
		return FALSE;

	for( nGroupCount=0; nGroupCount<PatternGroupInfoArray.GetSize(); nGroupCount++ )
	{
		CPatternGroupInfo *lpPatternGroupInfo = PatternGroupInfoArray.GetAt( nGroupCount );
		CPatternInfoLoader PatternInfoLoader;
		if( !PatternInfoLoader.LoadText( lpPatternGroupInfo->GetFileName(), lpPatternGroupInfo->GetPatternInfoArray() ) )
		{
		}
	}

	for( nGroupCount=0; nGroupCount<PatternGroupInfoArray.GetSize(); nGroupCount++ )
	{
		CPatternGroupInfo *lpPatternGroupInfo = PatternGroupInfoArray.GetAt( nGroupCount );
		if( lpPatternGroupInfo->GetDispFlag() )
		{
			CPatternGroupData* lpPatternGroupData = NULL;
			lpUserDatas->GetPatternGroupDataArray().AddWithNew( lpPatternGroupData );
			lpPatternGroupData->SetDispName( lpPatternGroupInfo->GetDispName() );

			for(int nPatternInfoCnt=0; nPatternInfoCnt<lpPatternGroupInfo->GetPatternInfoArray()->GetSize(); nPatternInfoCnt++ )
			{
				CPatternInfo* lpPatternInfo = lpPatternGroupInfo->GetPatternInfoArray()->GetAt(nPatternInfoCnt);
				CPatternData* lpPatternData = NULL;
				CReadBufferArray BinaryDataArray;

				CStringA szValue = CT2A(lpPatternInfo->GetValue());
				BYTE nDecValueByte = 0;
				unsigned short nDecValueShort = 0;
				unsigned int nDecValueInteger = 0;
				unsigned char* lpBuffer = NULL;

				if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_TEXT )
				{
					//
					BinaryDataArray.SetSize( szValue.GetLength() * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) );
					lpBuffer = BinaryDataArray.GetData();
					for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ )
					{
						CopyMemory( &lpBuffer[nRepeat*szValue.GetLength()], szValue.GetBuffer(), szValue.GetLength() );
					}
				}else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_8 )
				{
					nDecValueByte = (BYTE)strtoul( szValue, NULL, 10 );
					BinaryDataArray.SetSize( sizeof(nDecValueByte) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) );
					lpBuffer = BinaryDataArray.GetData();
					for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ )
					{
						CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueByte)], &nDecValueByte, sizeof(nDecValueByte) );
					}
				}else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_16_LITTLE )
				{
					nDecValueShort = (unsigned short)strtoul( szValue, NULL, 10 );
					nDecValueShort = CEndianConverter::ConvertToShort( (unsigned char*)&nDecValueShort, FALSE );
					BinaryDataArray.SetSize( sizeof(nDecValueShort) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) );
					lpBuffer = BinaryDataArray.GetData();
					for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ )
					{
						CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueShort)], &nDecValueShort, sizeof(nDecValueShort) );
					}
				}else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_16_BIG )
				{
					nDecValueShort = (unsigned short)strtoul( szValue, NULL, 10 );
					nDecValueShort = CEndianConverter::ConvertToShort( (unsigned char*)&nDecValueShort, TRUE );
					BinaryDataArray.SetSize( sizeof(nDecValueShort) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) );
					lpBuffer = BinaryDataArray.GetData();
					for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ )
					{
						CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueShort)], &nDecValueShort, sizeof(nDecValueShort) );
					}

				}else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_32_LITTLE )
				{
					nDecValueInteger = (unsigned int)strtoul( szValue, NULL, 10 );
					nDecValueInteger = CEndianConverter::ConvertToInteger( (unsigned char*)&nDecValueInteger, FALSE );
					BinaryDataArray.SetSize( sizeof(nDecValueInteger) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) );
					lpBuffer = BinaryDataArray.GetData();
					for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ )
					{
						CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueInteger)], &nDecValueInteger, sizeof(nDecValueInteger) );
					}
				}else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_DEC_32_BIG )
				{
					nDecValueInteger = (unsigned int)strtoul( szValue, NULL, 10 );
					nDecValueInteger = CEndianConverter::ConvertToInteger( (unsigned char*)&nDecValueInteger, TRUE );
					BinaryDataArray.SetSize( sizeof(nDecValueInteger) * (!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()) );
					lpBuffer = BinaryDataArray.GetData();
					for( int nRepeat=0; nRepeat<(!lpPatternInfo->GetRepeat()?1:lpPatternInfo->GetRepeat()); nRepeat++ )
					{
						CopyMemory( &lpBuffer[nRepeat*sizeof(nDecValueInteger)], &nDecValueInteger, sizeof(nDecValueInteger) );
					}
				}else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_HEX )
				{
					//
					BinaryDataArray.SetSize( (int)(szValue.GetLength()/2) );
					for( int cCnt=0; cCnt<(int)(szValue.GetLength()/2); cCnt++ )
					{
						unsigned int nVal = strtol( szValue.Mid( cCnt*2, 2 ),NULL,16 );
						BinaryDataArray.SetAt(cCnt, nVal);
					}
				}else if( lpPatternInfo->GetDataType() == CPatternData::DATATYPE_BIN )
				{
					//
					CFileReader fl;
					if( !fl.ReadFile( lpPatternInfo->GetFileName(), BinaryDataArray ) )
						continue;
				}
				lpPatternGroupData->GetPatternDataArray()->AddWithNew( lpPatternData );

				lpPatternData->SetCheck( lpPatternInfo->GetSelectFlag() );
				lpPatternData->SetDispName( lpPatternInfo->GetDispName() );
				lpPatternData->SetDataType( lpPatternInfo->GetDataType() );
				lpPatternData->SetValue( lpPatternInfo->GetValue() );
				lpPatternData->SetRepeat( lpPatternInfo->GetRepeat() );
				lpPatternData->SetWriteMode( lpPatternInfo->GetWriteMode() );
				lpPatternData->SetFuzzArea( lpPatternInfo->GetFuzzArea() );
				lpPatternData->SetSearchField( lpPatternInfo->GetSearchField() );
				lpPatternData->SetFieldKey( lpPatternInfo->GetFieldKey() );
				lpPatternData->SetDescription( lpPatternInfo->GetDescription() );
				lpPatternData->SetBinaryDataArray( BinaryDataArray );

				if( lpPatternInfo->GetFuzzArea() == CPatternData::FUZZAREA_FILE )
				{
					TCHAR* endptr = NULL;
					int nFilePos = _tcstol( lpPatternInfo->GetFieldKey(), &endptr, 10 );
					if( _tcslen(endptr) )
						continue;
					lpPatternData->SetFilePos( nFilePos );
				}

				if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TAG ||
					lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TYPE ||
					lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_SEGMENT )
				{
					POSITION pos = NULL;
					CString szKey;
					CImageFileDirectoryInfo *lpImageFileDirectoryInfo = NULL;
					CFealdEntryInfo* lpFealdEntryInfo = NULL;
					CSegmentItemInfo* lpSegmentItemInfo = NULL;
					CTagTypeInfo* lpTagTypeInfo = NULL;
					int nFieldKey = 0;

					switch(lpPatternData->GetSearchField())
					{
					case CPatternData::SEARCHFIELD_TAG:
						pos = m_FixedDatas.GetImageFileDirectoryInfoMap().GetStartPosition();
						while(pos)
						{
							m_FixedDatas.GetImageFileDirectoryInfoMap().GetNextAssoc( pos, szKey, lpImageFileDirectoryInfo );
							if( lpImageFileDirectoryInfo->GetFealdEntryInfoMap()->Lookup( lpPatternData->GetFieldKey(), lpFealdEntryInfo ) )
								break;
						}
						break;
					case CPatternData::SEARCHFIELD_TYPE:
						nFieldKey = _tstol(lpPatternData->GetFieldKey());
						m_FixedDatas.GetTagTypeInfoMap().Lookup( nFieldKey, lpTagTypeInfo );
						break;
					case CPatternData::SEARCHFIELD_SEGMENT:
						m_FixedDatas.GetSegmentItemInfoMap().Lookup( lpPatternData->GetFieldKey(), lpSegmentItemInfo );
						break;
					}
					lpPatternData->SetFealdEntryInfo( lpFealdEntryInfo );
					lpPatternData->SetTagTypeInfo( lpTagTypeInfo );
					lpPatternData->SetSegmentItemInfo( lpSegmentItemInfo );
				}
			}
		}
	}

	SendMessageToDescendants( WM_APP_GROUP_DISP, NULL, NULL );

	return TRUE;
}
Пример #28
0
LRESULT CMainFrame::OnCreateFuzzList( WPARAM wParam, LPARAM lParam )
{
	CUserDatas* lpUserDatas = ((CIFuzzMakerDoc*)GetActiveDocument())->GetUserDatas();

	CFealdEntryDataArray CheckedFealdEntryDataArray;
	CSegmentItemDataArray CheckedSegmentItemDataArray;
	CPatternDataArray CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_COUNT];

	CheckedFealdEntryDataArray.SetAutoDelete( FALSE );
	CheckedSegmentItemDataArray.SetAutoDelete( FALSE );
	CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].SetAutoDelete( FALSE );
	CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].SetAutoDelete( FALSE );
	CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].SetAutoDelete( FALSE );

	lpUserDatas->GetFuzzDataArray().RemoveAllWithDelete();

	for( int nSegmentData=0; nSegmentData<lpUserDatas->GetSegmentDataArray().GetSize(); nSegmentData++ )
	{
		CSegmentData* lpSegmentData = lpUserDatas->GetSegmentDataArray().GetAt(nSegmentData);
		//	選択されているタグ取得
		for( int nExifData=0; nExifData<lpSegmentData->GetExifDataArray()->GetSize(); nExifData++ )
		{
			CExifData* lpExifData = lpSegmentData->GetExifDataArray()->GetAt(nExifData);
			for( int nImageFileDirectoryData=0; nImageFileDirectoryData<lpExifData->GetImageFileDirectoryDataArray()->GetSize(); nImageFileDirectoryData++ )
			{
				//bListGroup = FALSE;
				CImageFileDirectoryData* lpImageFileDirectoryData = lpExifData->GetImageFileDirectoryDataArray()->GetAt(nImageFileDirectoryData);
				for( int nFealdEntryData=0; nFealdEntryData<lpImageFileDirectoryData->GetFealdEntryDataArray()->GetSize(); nFealdEntryData++ )
				{
					CFealdEntryData* lpFealdEntryData = lpImageFileDirectoryData->GetFealdEntryDataArray()->GetAt(nFealdEntryData);
					{
						if( lpFealdEntryData->GetCheck() )
						{
							CheckedFealdEntryDataArray.Add( lpFealdEntryData );
						}
					}
				}
			}
		}
		//	選択されているセグメントパターンを取得
		if( lpSegmentData->GetSegmentInfo() && lpSegmentData->GetSegmentInfo()->IsAnalysisSegment() )
		{
			for( int nSegmentItemData=0; nSegmentItemData<lpSegmentData->GetSegmentItemDataArray()->GetSize(); nSegmentItemData++ )
			{
				CSegmentItemData *lpSegmentItemData = lpSegmentData->GetSegmentItemDataArray()->GetAt( nSegmentItemData );
				if( lpSegmentItemData->GetCheck() )
				{
					CheckedSegmentItemDataArray.Add( lpSegmentItemData );
				}
			}
		}
	}

	//	選択されているパターンを取得
	for( int nPatternGroupData=0; nPatternGroupData<lpUserDatas->GetPatternGroupDataArray().GetSize(); nPatternGroupData++ )
	{
		CPatternGroupData* lpPatternGroupData = lpUserDatas->GetPatternGroupDataArray().GetAt( nPatternGroupData );
		for( int nPatternData=0; nPatternData<lpPatternGroupData->GetPatternDataArray()->GetSize(); nPatternData++ )
		{
			CPatternData* lpPatternData = lpPatternGroupData->GetPatternDataArray()->GetAt(nPatternData);
			if( lpPatternData->GetCheck() )
			{
				if( lpPatternData->GetFuzzArea() == CPatternData::FUZZAREA_SEGMENT )
					CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].Add( lpPatternData );
				else if( lpPatternData->GetFuzzArea() == CPatternData::FUZZAREA_FILE )
					CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].Add( lpPatternData );
				else
					CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].Add( lpPatternData );
			}
		}
	}

	for( int nFealdEntryData=0; nFealdEntryData<CheckedFealdEntryDataArray.GetSize(); nFealdEntryData++ )
	{
		CFealdEntryData* lpFealdEntryData = CheckedFealdEntryDataArray.GetAt( nFealdEntryData );
		for( int nPatternData=0; nPatternData<CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].GetSize(); nPatternData++ )
		{
			CPatternData* lpPatternData = CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FIELDENTRY].GetAt( nPatternData );
			//	タグ指定あり
			if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TAG )
			{
				if( lpPatternData->GetFieldKey() != lpFealdEntryData->GetTagID() )
				{
					continue;
				}
			}
			//	タイプ指定あり
			if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_TYPE )
			{
				if( _tstol(lpPatternData->GetFieldKey()) != lpFealdEntryData->GetType() )
				{
					continue;
				}
			}
			CFuzzData* lpFuzzData = NULL;
			lpUserDatas->GetFuzzDataArray().AddWithNew( lpFuzzData );
			lpFuzzData->SetFuzzDataType( CFuzzData::FUZZDATA_TYPE_FIELDENTRY );
			lpFuzzData->SetFealdEntryData( lpFealdEntryData );
			lpFuzzData->SetPatternData( lpPatternData );

		}
	}

	for( int nSegmentItemData=0; nSegmentItemData<CheckedSegmentItemDataArray.GetSize(); nSegmentItemData++ )
	{
		CSegmentItemData *lpSegmentItemData = CheckedSegmentItemDataArray.GetAt( nSegmentItemData );
		for( int nPatternData=0; nPatternData<CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].GetSize(); nPatternData++ )
		{
			CPatternData* lpPatternData = CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_SEGMENT].GetAt( nPatternData );
			//	指定あり
			if( lpPatternData->GetSearchField() == CPatternData::SEARCHFIELD_SEGMENT )
			{
				if( lpPatternData->GetFieldKey() != lpSegmentItemData->GetSegmentItemInfo()->GetItemTag() )
				{
					continue;
				}
			}
			CFuzzData* lpFuzzData = NULL;
			lpUserDatas->GetFuzzDataArray().AddWithNew( lpFuzzData );
			lpFuzzData->SetFuzzDataType( CFuzzData::FUZZDATA_TYPE_SEGMENT );
			lpFuzzData->SetSegmentItemData( lpSegmentItemData );
			lpFuzzData->SetPatternData( lpPatternData );
		}
	}

	for( int nPatternData=0; nPatternData<CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].GetSize(); nPatternData++ )
	{
		CPatternData* lpPatternData = CheckedPatternDataArray[CFuzzData::FUZZDATA_TYPE_FILE].GetAt( nPatternData );

		CFuzzData* lpFuzzData = NULL;
		lpUserDatas->GetFuzzDataArray().AddWithNew( lpFuzzData );
		lpFuzzData->SetFuzzDataType( CFuzzData::FUZZDATA_TYPE_FILE );
		lpFuzzData->SetPatternData( lpPatternData );
	}

	SendMessageToDescendants( WM_APP_FUZZ_LIST_DISP, NULL, NULL );

	return TRUE;
}