예제 #1
0
파일: tini.cpp 프로젝트: darkphase/FastCopy
BOOL TInifile::WriteIni()
{
	Lock();

	BOOL	ret = FALSE;
	HANDLE	hFile = ::CreateFileW(iniFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,
									FILE_ATTRIBUTE_NORMAL, 0);

	if (hFile != INVALID_HANDLE_VALUE) {
#define MIN_INI_ALLOC (64 * 1024)
#define MAX_INI_ALLOC (10 * 1024 * 1024)
#define MIN_LINE_SIZE (2 * 1024)
		VBuf	vbuf(MIN_INI_ALLOC, MAX_INI_ALLOC);
		char	*p = (char *)vbuf.Buf();

		for (TIniSection *sec = TopObj(); sec && p; sec = NextObj(sec)) {
			TIniKey *key = sec->TopObj();
			int		len = 0;
			if (key) {
				if (sec->Name()) {
					len = sprintf(p, "[%s]\r\n", sec->Name());
					p = NextBuf(&vbuf, len, MIN_LINE_SIZE, MIN_INI_ALLOC);
				}
				while (key) {
					if (key->Key())	{
						len = sprintf(p, "%s=\"%s\"\r\n", key->Key(), key->Val());
						p = NextBuf(&vbuf, len, MIN_LINE_SIZE, MIN_INI_ALLOC);
					}
					else {
						len = sprintf(p, "%s\r\n", key->Val());
						p = NextBuf(&vbuf, len, MIN_LINE_SIZE, MIN_INI_ALLOC);
					}
					key = sec->NextObj(key);
				}
			}
		}
		DWORD	size;
		ret = ::WriteFile(hFile, vbuf.Buf(), (DWORD)vbuf.UsedSize(), &size, 0);
		::CloseHandle(hFile);
	}
	UnLock();

	return	ret;
}
예제 #2
0
파일: Comm.cpp 프로젝트: ja7ude/mmtty
//---------------------------------------------------------------------------
void __fastcall CComm::Execute()
{
	m_Execute = 1;
    int BitLen = pMod->m_BitLen;
	//---- スレッドのコードをここに記述 ----
//	Priority = tpLower;
	while(1){
_try:;
		if( Terminated == TRUE ){
			return;
		}
		if( m_Command == COMM_CLOSE ){
			m_Command = 0;
			return;
		}
		if( m_CreateON == TRUE ){
			if( !m_TxEnb ){
				::Sleep(10);
			}
			else if( !TxBusy() ){
				if( m_FirstGaurd ){		// 最初のガード時間の確保
					m_FirstGaurd = 0;
					::Sleep(250);
					if( m_DisDiddle == -1 ) m_DisDiddle = 0;
				}
				else if( m_txcnt && (FSKDeff <= DEFFSOUND) ){	// 送信データあり
					m_DisDiddle = pMod->m_DisDiddle;
					m_Data = m_txbuf[m_txrp];
					if( m_figout && (m_fig == 0x1b) && (m_Data != 0x1f) ){
						m_Data = 0x1b;
					}
					else {
						switch(m_Data){
							case 0xff:		// Mark
								::Sleep((pMod->m_ReCount * 3 * 1000) / SampFreq);
								NextBuf();
								goto _try;
							case 0xfe:		// キャリア断続
								NextBuf();
								goto _try;
							case 0xfd:		// disable diddle
								m_DisDiddle = 0;
								NextBuf();
								goto _try;
							case 0xfc:		// enable diddle
								m_DisDiddle = 1;
								NextBuf();
								goto _try;
							case 0x1b:
							case 0x1f:
								m_fig = m_Data;
								break;
						}
						NextBuf();
					}
					m_figout = 0;
					if( !pMod->m_CharWaitDiddle ){
						WaitTXD(pMod->m_CharWait);
					}
					m_WaitTimerCount = 4;
					OutData(m_Data);
				}
				else if( (BitLen < 6) && ((FSKDeff > DEFFSOUND) || (pMod->m_diddle && !m_DisDiddle)) ){
					if( FSKDeff > DEFFSOUND ){
						WaitTXD(pMod->m_CharWait);
					}
					else if( (sys.m_LWait == 2) || !pMod->m_WaitTimer || m_WaitTimerCount ){
						if( !pMod->m_CharWaitDiddle ){
							if( sys.m_LWait == 2 ){
								WaitTXD(pMod->m_CharWait);
							}
							else if( pMod->m_DiddleWait ){
								WaitTXD(pMod->m_DiddleWait);
							}
						}
					}
					m_idle = 1;
					switch(pMod->m_diddle){
						case 1:		// BLK
							if( pMod->m_RandomDiddle && !(rand() & 3) ){
								m_Data = 0x1f;
								if( pMod->m_BitLen <= 6 ) m_figout = 1;
							}
							else {
								m_Data = 0x00;
							}
							break;
						default:	// LTR
							if( pMod->m_RandomDiddle && !(rand() & 3) ){
								m_Data = 0x00;
							}
							else {
								m_Data = 0x1f;
								if( pMod->m_BitLen <= 6 ) m_figout = 1;
							}
							break;
					}
					if( m_WaitTimerCount ) m_WaitTimerCount--;
					OutData(m_Data);
				}
				else {
					if( !m_idle ){
						::Sleep((pMod->m_ReCount * pMod->m_BitLen)*1000/SampFreq);
					}
					m_idle = 1;
				}
				::Sleep(10);
			}
			else {
				::Sleep(1);
			}
		}
		else {
			::Sleep(10);
		}
	}
}