示例#1
0
uint32_t Tokenizer::STokenize(const char_t *str, const char_t *delim)
{
    Reset();

    ecila_strncpy(source_, str, sizeof(source_));

    return StringTokenize(source_, delim);
}
示例#2
0
bool TextScanner::SetupFromMemoryAddress(const char *pCharArray)
{
	m_lines = StringTokenize(pCharArray, "\n");

	for (unsigned int i=0; i < m_lines.size(); i++)
	{
		StringReplace("\r", "", m_lines[i]);

	}
	return true;
}
示例#3
0
bool AnalyzeNetAddress(const std::string &address, uint32_t &out_ip, uint16_t &out_port)
{
    std::list<std::string> ip_and_port;
    StringTokenize(address, ":", ip_and_port);
    if (ip_and_port.size() != 2)
        return false;
    
    out_ip = InetStringToNumber(*(ip_and_port.begin()));
    ip_and_port.pop_front();
    out_port = (uint16_t)atoi((*(ip_and_port.begin())).c_str());
    return true ;
}
示例#4
0
std::string TextScanner::GetMultipleLineStrings( string label, string token )
{
	for (unsigned int i=m_lastLine; i < m_lines.size(); i++)
	{
		if (m_lines[i].empty()) continue;
		vector<string> line = StringTokenize(m_lines[i], token);
		if (line[0] == label)
		{
			//found it
			m_lastLine = i+1;
			return m_lines[i];
		}
	}
	m_lastLine = 0; //reset it
	return "";
}
示例#5
0
std::string TextScanner::GetParmString( string label, int index,  string token)
{
	if (m_lines.empty())
	{
		LogError("Load a file first");
		return "";
	}

	for (unsigned int i=0; i < m_lines.size(); i++)
	{
		if (m_lines[i].empty()) continue;
		vector<string> line = StringTokenize(m_lines[i], token);
		if (line[0] == label)
		{
			//found it
			return line[index];
		}
	}

	return "";
}
示例#6
0
int CUpdateUtil::VersionCheck(LPCSTR lpszFileName, LPCSTR lpszClientVersion, LPCSTR lpszServerVersion, 
							  LPCSTR lpszServerAddress, LPCSTR lpszServerMD5, unsigned long ulServerSize)
{
	CString strFileFullPath = lpszFileName;
	unsigned long ulClientSize = 0;

	// 0. 파일 존재 유무 확인
	// 1. MD5 체크
	// 2. 파일 크기 먼저 확인(0으로 되어 있는 경우도 참고)
	//  2.1 파일 크기가 0으로 되어 있는 경우(솔루션의 v3d 파일 같은 경우 자주 다운 안 받아도 됨)는
	//      파일 크기만 확인하여 업데이트
	// 3. 파일 버전 확인(없는 경우도 참고)

	// 0. file exist check
	if( IsFileExist(strFileFullPath, ulClientSize) ){
		// 1. md5 check
		CString strMD5 = lpszServerMD5;
		if(!strMD5.IsEmpty() && strMD5.GetLength()==32){
			MD5 context(strFileFullPath);
			if( !context.GetHash().IsEmpty() )
				if( 0==context.GetHash().CompareNoCase(strMD5) )
					return UPDATE_FLAG_NORMAL;
				else 
					return UPDATE_FLAG_UPDATE;
		}		

		CString strClientVersion = lpszClientVersion;
		CString strServerVersion = lpszServerVersion;

		// 2. file size check
		if( ulServerSize == UPDATE_FILE_SIZE_NOT_EXIST ){ // 0
			CString strFileAddress = lpszServerAddress;
			DownloadFileSizeCheck(strFileAddress, ulServerSize);
		}

		// 3. version check 
		if(strServerVersion.IsEmpty() || 0==strServerVersion.CompareNoCase("0")){
			// only file size check
			if( (ulClientSize >= ulServerSize) )	return UPDATE_FLAG_NORMAL;
			else /* ulClientSize < ulServerSize*/	return UPDATE_FLAG_UPDATE;
		}
		else{
			char cFileVersion[MAX_PATH];
			
			if( GetFileVersion((LPTSTR)(LPCTSTR)strFileFullPath, cFileVersion) ){
				char cServerVersion[MAX_PATH];
				strcpy(cServerVersion, (LPCSTR)strServerVersion);	

				if( strcmp(cFileVersion, cServerVersion) == 0 ){
					if(ulClientSize>0 && ulServerSize>0){
						if( (ulClientSize >= ulServerSize) )	return UPDATE_FLAG_NORMAL;
						else									return UPDATE_FLAG_UPDATE;
					}
					else
						return UPDATE_FLAG_NORMAL;
				}
				else{
					// 1. Client file version > Server file version : 업데이트 취소
					CUIntArray unarrayClient, unarrayServer;
					
					strClientVersion = cFileVersion;
					strServerVersion = cServerVersion;
					
					StringTokenize(strClientVersion, unarrayClient);
					StringTokenize(strServerVersion, unarrayServer);
					
					return RealVersionCheck(unarrayClient, unarrayServer);
				}
			}
			else{
				if(strClientVersion.IsEmpty() || 0==strClientVersion.CompareNoCase("0")){
					if( (ulClientSize >= ulServerSize) )	return UPDATE_FLAG_NORMAL;
					else									return UPDATE_FLAG_UPDATE;
				}
				else{
					if( 0==strServerVersion.CompareNoCase(strClientVersion) ){
						if( (ulClientSize >= ulServerSize) )	return UPDATE_FLAG_NORMAL;
						else									return UPDATE_FLAG_UPDATE;
					}
					else{
						CUIntArray unarrayClient, unarrayServer;
						
						StringTokenize(strClientVersion, unarrayClient);
						StringTokenize(strServerVersion, unarrayServer);
						
						return RealVersionCheck(unarrayClient, unarrayServer);
					}
				}
			}
		}
	}
	else
		return UPDATE_FLAG_NEW;
}
示例#7
0
vector<string> TextScanner::TokenizeLine( int lineNum, const string &theDelimiter /*= "|"*/ )
{
	return StringTokenize(m_lines[lineNum], theDelimiter);
}
示例#8
0
uint32_t Tokenizer::STokenize(char_t *str, const char_t *delim)
{
    Reset();

    return StringTokenize(str, delim);
}