Beispiel #1
0
int CTrivia::IncreaseScore(CString &strUser, int nPoints) //, PINT nDone)
{

	int nResult = -1;

	PLAYER player;

	if(m_aPlayers.Lookup(GetBaseName(strUser), player)){

		player.nTriviaScore += nPoints;
		
		nResult = player.nTriviaScore;
	}
	else{

		player.strName		= GetBaseName(strUser);
		player.nTriviaScore = nPoints;
		player.bIsAdmin		= FALSE;
	}

	m_aPlayers.SetAt(player.strName, player);

	/*for(int i = 0; i < m_aPlayers.GetSize(); i++){

		//if(m_aPlayers[i].strName.Find(GetBaseName(strUser), 0) == 0){
		i

			m_aPlayers[i].nTriviaScore += nPoints;
			nResult =  m_aPlayers[i].nTriviaScore;
			break;
		}
	}

	if(nResult == -1){

		PLAYER u;
		u.nTriviaScore = nPoints;
		u.strName = GetBaseName(strUser);
		m_aPlayers.Add(u);
		nResult = nPoints;
	}*/

/*	if(m_nRoundEnd != -1){

		*nDone = nResult >= m_nRoundEnd;
	}
	else{

		*nDone = 0;
	}*/
	
	return nResult;
}
Beispiel #2
0
  int util_main(int argc, char **argv)
  {
    std::string name( argv[0] );
    Values::SetProgName( GetBaseName( name ) );

    gOptMan.PackOptions( argc-1, argv+1 );

    int rac = gOptMan.GetNumOptionsBeforeDDash();
    OptionHandler oh;

    for (int i = 0, j = 0; i < rac; i++, j = 0) {
      oh = OptionMap::Instance().GetHandler(gOptMan[i].GetName());
      if (oh) {
	oh(gOptMan[i]);
      }
    }

    // add the post '--' functions here
    if (util_afterdashes()) {
      exit(EXIT_FAILURE);
    }

    // Set the suffix based on the rank, if supplied.
    if (Values::gRank() != -1) {
      std::string sufx( Values::gRankSuffix() );
      sufx += "."  + DecToAbc( Values::gRank() );
      Values::SetRankSuffix( sufx ); 
    }
    else {
      Values::SetRankSuffix( "" );
    }

    return(0);
  }
Beispiel #3
0
int CItem::GetRefineLevel()
{
	const char* name = GetBaseName();
	char* p = const_cast<char*>(strrchr(name, '+'));

	if (!p)
		return 0;

	int	rtn = 0;
	str_to_number(rtn, p+1);

	const char* locale_name = GetName();
	p = const_cast<char*>(strrchr(locale_name, '+'));

	if (p)
	{
		int	locale_rtn = 0;
		str_to_number(locale_rtn, p+1);
		if (locale_rtn != rtn)
		{
			sys_err("refine_level_based_on_NAME(%d) is not equal to refine_level_based_on_LOCALE_NAME(%d).", rtn, locale_rtn);
		}
	}

	return rtn;
}
Beispiel #4
0
const char* MCAD_FILEPATH::GetFileName( void )
{
    if( m_fullpath->empty() )
        return NULL;

    if( m_filename->empty() )
    {
        const char* cp = GetBaseName();

        if( NULL == cp )
            return NULL;

        *m_filename = cp;

        cp = GetExtension();

        if( NULL != cp )
        {
            m_filename->append( 1, '.' );
            m_filename->append( cp );
        }
    }

    return m_filename->c_str();
}
Beispiel #5
0
int FindInstances(const char *processName, DWORD *pids)
{
	int found = 0;
	// Include all processes in the snapshot
	// th32ProcessID is ignored
	HANDLE snapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (snapShot == INVALID_HANDLE_VALUE)
	{
		return found;
	}

	PROCESSENTRY32 processEntry;
	processEntry.dwSize = sizeof(PROCESSENTRY32);
	ZeroMemory(&processEntry.cntUsage, sizeof(PROCESSENTRY32) - sizeof(DWORD));
	if (Process32First(snapShot, &processEntry))
	{
		do
		{
			if (StrICmp(GetBaseName(processEntry.szExeFile), processName))
			{
				pids[found] = processEntry.th32ProcessID;
				++found;
			}
		} while (Process32Next(snapShot, &processEntry));
	}
	CloseHandle(snapShot);
	return found;
}
int traverseDir(const char* directory, fileEntryCallback_func f_callback, void * opaque1, void * opaque2)
{
	DIR *pRecordDir;
	struct dirent *pEntry;
	struct stat FStat;
	const char *pszBaseName;
	char szFullPathName[512];

	fileEntry_T curEntry;

	if (directory == NULL) return -1;
	if (f_callback == NULL) return -2;

	pRecordDir = opendir(directory);
	if (pRecordDir == NULL)
	{
		return -10;
	}

	while ((pEntry = readdir(pRecordDir)) != NULL)
	{
		pszBaseName = GetBaseName(pEntry->d_name);
		if (pszBaseName != NULL && pszBaseName[0] != '.')
		{
			memset(&curEntry, 0, sizeof(curEntry));

			snprintf(szFullPathName, sizeof(szFullPathName)-1, "%s/%s", directory, pszBaseName);
			if (pEntry->d_type == DT_REG)
			{
//				C_GetFileSize(szFullPathName, &curEntry.size);
			}
			else if (pEntry->d_type == DT_DIR)
			{
				curEntry.isDirectory = 1;
			}
			else if (pEntry->d_type == DT_UNKNOWN)
			{
				if (lstat(szFullPathName, &FStat) == 0)
				{
					if (S_ISDIR(FStat.st_mode))
					{
						curEntry.isDirectory = 1;
					}
				}
				else
				{
					printf("lstat failed for \"%s\", errno=%d.\n", szFullPathName);
				}

			}

			curEntry.name = pEntry->d_name;

			f_callback(szFullPathName, &curEntry, opaque1, opaque2);
		}
	}

	closedir (pRecordDir);
	return 1;
}
Beispiel #7
0
void CTrivia::SetAdmin(CString strUser, bool bAdmin)
{

	strUser = GetBaseName(strUser);

	/*for(int i = 0; i < m_aPlayers.GetSize(); i++){

		if(m_aPlayers[i].strName.Find(strUser, 0) == 0){

			m_aPlayers[i].bIsAdmin = bAdmin;
			return;
		}
	}*/

	PLAYER player;

	if(m_aPlayers.Lookup(strUser, player)){

		player.bIsAdmin = bAdmin;
	}
	else{

		player.strName = strUser;
		player.bIsAdmin = bAdmin;
		player.nTriviaScore = 0;
	}

	m_aPlayers.SetAt(strUser, player);
}
Beispiel #8
0
static void SetupImpLib( void )
/*****************************/
{
    const char  *fname;
    size_t      namelen;

    ImpLib.bufsize = 0;
    ImpLib.handle = NIL_FHANDLE;
    ImpLib.buffer = NULL;
    ImpLib.dllname = NULL;
    ImpLib.didone = false;
    if( FmtData.make_implib ) {
        _ChkAlloc( ImpLib.buffer, IMPLIB_BUFSIZE );
        if( FmtData.make_impfile ) {
            ImpLib.fname = ChkStrDup( FmtData.implibname );
            ImpLib.handle = QOpenRW( ImpLib.fname );
        } else {
            ImpLib.handle = OpenTempFile( &ImpLib.fname );
        }
        /* GetBaseName results in the filename only   *
         * it trims both the path, and the extension */
        fname = GetBaseName( Root->outfile->fname, 0, &namelen );
        ImpLib.dlllen = namelen;
        /*
         * increase length to restore full extension if not OS2
         * sometimes the extension of the output name is important
         */
        ImpLib.dlllen += strlen( fname + namelen );
        _ChkAlloc( ImpLib.dllname, ImpLib.dlllen );
        memcpy( ImpLib.dllname, fname, ImpLib.dlllen );
    }
}
Beispiel #9
0
/* matches the filename of a path against a list of semicolon
   separated filters as used by the common file dialogs
   (e.g. "*.pdf;*.xps;?.*" will match all PDF and XPS files and
   all filenames consisting of only a single character and
   having any extension) */
bool Match(const WCHAR *path, const WCHAR *filter)
{
    path = GetBaseName(path);
    while (str::FindChar(filter, ';')) {
        if (MatchWildcardsRec(path, filter))
            return true;
        filter = str::FindChar(filter, ';') + 1;
    }
    return MatchWildcardsRec(path, filter);
}
Beispiel #10
0
// Called when a user in the channel changes an attribute
void CTrivia::OnRename(DWORD dwID, PMX_USERINFO pOld, PMX_USERINFO pNew)
{

	PLAYER player;
	player.bIsAdmin		= FALSE;
	player.nTriviaScore = 0;

	if(m_aPlayers.Lookup(GetBaseName(pOld->strUser), player)){

		m_aPlayers.RemoveKey(player.strName);
		
		player.strName = GetBaseName(pNew->strUser);
		
		m_aPlayers.SetAt(player.strName, player);

		TRACE("Player name change applied succesfully :-)\n");
	}

}
Beispiel #11
0
void
UsdGeomPrimvar::GetDeclarationInfo(TfToken *name, SdfValueTypeName *typeName,
                                 TfToken *interpolation, 
                                 int *elementSize) const
{
    TF_VERIFY(name && typeName && interpolation && elementSize);

    // We don't have any more efficient access pattern yet, but at least
    // we're still saving client some code
    *name = GetBaseName();
    *typeName = GetTypeName();
    *interpolation = GetInterpolation();
    *elementSize = GetElementSize();
}
Beispiel #12
0
// Caller has to free()
WCHAR *GetDir(const WCHAR *path)
{
    const WCHAR *baseName = GetBaseName(path);
    if (baseName == path) // relative directory
        return str::Dup(L".");
    if (baseName == path + 1) // relative root
        return str::DupN(path, 1);
    if (baseName == path + 3 && path[1] == ':') // local drive root
        return str::DupN(path, 3);
    if (baseName == path + 2 && str::StartsWith(path, L"\\\\")) // server root
        return str::Dup(path);
    // any subdirectory
    return str::DupN(path, baseName - path - 1);
}
Beispiel #13
0
extern char *FEExtName( CGSYM_HANDLE sym_handle, int request )
/************************************************************/
{
    switch( request ) {
    case EXTN_BASENAME:
        return( GetBaseName( sym_handle ) );
    case EXTN_PATTERN:
        return( GetNamePattern( sym_handle ) );
    case EXTN_PRMSIZE:
        return( (char *)GetParmsSize( sym_handle ) );
    default:
        return( NULL );
    }
}
Beispiel #14
0
const char *FEExtName( CGSYM_HANDLE sym_handle, int request )
/***********************************************************/
{
    switch( request ) {
    case EXTN_BASENAME:
        return( GetBaseName( (SYM_HANDLE)sym_handle ) );
    case EXTN_PATTERN:
        return( GetNamePattern( (SYM_HANDLE)sym_handle ) );
    case EXTN_PRMSIZE:
        return( (const char *)(pointer_int)GetParmsSize( (SYM_HANDLE)sym_handle ) );
    case EXTN_CALLBACKNAME:
    default:
        return( NULL );
    }
}
Beispiel #15
0
void CSAStatusLog::Init(const char *pOutputFilename)
{
	m_bEnable = TRUE;

   // get application path and name
	char buf[MAX_PATH+1];
	DWORD res = GetModuleFileName(AfxGetInstanceHandle(), buf, MAX_PATH);

	CString appDir = GetBaseDir(buf);

   m_csAppName = GetBaseName(buf);

   m_csFileName.Format("%s\\%s", appDir, pOutputFilename);

   // overwrite the old one!
   remove(m_csFileName);
}
Beispiel #16
0
// Called when a user selects an item from a menu. nCmd is the command identifer, 
// dwID is the ID of the channel. this is -1 if the command is not channel related
void CTrivia::OnMenuCommand(UINT nCmd, DWORD dwID, CString strName)
{


	CString strBase;
	if(strName.GetLength()){
		
		strBase = GetBaseName(strName);
	}

	switch(nCmd){

		case ID_MENUBASE: // set
			InputMessage(dwID, "/trivia start");
			break;
		case ID_MENUBASE+1: // unset
			InputMessage(dwID, "/trivia stop");
			break;
		case ID_MENUBASE+2: // start
			FloodSafeInput(dwID, "!trivia 20");
			break;
		case ID_MENUBASE+3: // start endless
			FloodSafeInput(dwID, "!trivia");
			break;
		case ID_MENUBASE+4: // stop
			FloodSafeInput(dwID, "!strivia");
			break;
		case ID_MENUBASE+5: // ranking
			FloodSafeInput(dwID, "!ranking");
			break;
		case ID_MENUBASE+6: // hints
			FloodSafeInput(dwID, "!hints");
			break;
		case ID_MENUBASE+10: // Add as Gamemaster
			InputMessage(dwID, "/addgamemaster " + strBase);
			break;
		case ID_MENUBASE+11: // Remove Gamemaster
			InputMessage(dwID, "/removegamemaster " + strBase);
			break;
		case ID_MENUBASE+12: // score
			FloodSafeInput(dwID, "!score " + strBase);
			break;
	}
}
Beispiel #17
0
BOOL CTrivia::IsAdmin(CString strNickname)
{

	strNickname = GetBaseName(strNickname);
	/*for(int i = 0; i < m_aPlayers.GetSize(); i++){

		if(m_aPlayers[i].strName.Find(strNickname, 0) == 0){

			return m_aPlayers[i].bIsAdmin;
		}
	}*/
	PLAYER player;
	if(m_aPlayers.Lookup(strNickname, player)){

		return player.bIsAdmin;
	}

	return FALSE;
}
Beispiel #18
0
// Called when your own username changes, either because of
// Userinteraction or if the client-id changes
// new since API Version 0x1002L
void CTrivia::OnSetUserName(CString strNewUsername)
{

	PLAYER player;
	player.bIsAdmin		= TRUE;
	player.nTriviaScore = 0;

	if(m_strBotname.GetLength()){

		if(m_aPlayers.Lookup(m_strBotname, player)){

			m_aPlayers.RemoveKey(m_strBotname);
		}
	}

	m_strBotname    = GetBaseName(strNewUsername);
	player.strName  = m_strBotname;

	m_aPlayers.SetAt(player.strName, player);

}
Beispiel #19
0
int CTrivia::GetScore(const CString strNickname)
{

	/*
	for(int i = 0; i < m_aPlayers.GetSize(); i++){

		if(m_aPlayers[i].strName.Find(strNickname, 0) == 0){

			return m_aPlayers[i].nTriviaScore;
		}
	}*/
	int nScore = 0;
	
	PLAYER player;
	if(m_aPlayers.Lookup(GetBaseName(strNickname), player)){

		nScore = player.nTriviaScore;
	}

	return nScore;
}
Beispiel #20
0
int DetectCheats(const char **names, int n, DWORD *pids)
{
	int found = 0;
	HANDLE snapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (snapShot == INVALID_HANDLE_VALUE)
	{
		return found;
	}

	PROCESSENTRY32 processEntry;
	processEntry.dwSize = sizeof(PROCESSENTRY32);
	ZeroMemory(&processEntry.cntUsage, sizeof(PROCESSENTRY32) - sizeof(DWORD));
	if (Process32First(snapShot, &processEntry))
	{
		do
		{
			int i;
			for (i = 0; i < n; ++i)
			{
				if (!StrICmp(GetBaseName(processEntry.szExeFile), names[i]))
				{
					continue;
				}
				else
				{
					pids[found] = processEntry.th32ProcessID;
					++found;
					DebugOutput(names[i]);
					break;
				}
			}
		} while (Process32Next(snapShot, &processEntry));
	}
	CloseHandle(snapShot);
	return found;
}
Beispiel #21
0
void CTrivia::OnMessage(DWORD dwID, CString* pUser, CString* pMsg, BOOL bIsAction)
{
 	

	if(m_dwTriviaID != dwID){

		return;
	}

	CString strNickname = *pUser;
	CString strMessage	= *pMsg;

	// Nickname is emtpy, ignore input :-P
	if(strNickname.IsEmpty()){
	
		return;
	}
	// Message is emtpy, ignore input :-P
	if(strMessage.IsEmpty()){
		
		return;
	}
	
	if(m_strQuestion.GetLength() && (strMessage.Find(m_strQuestion) >= 0)){
		
		return;
	}

	CString strTmp;

	if((strMessage == "!hints") && IsAdmin(strNickname)){

		m_bHints = !m_bHints;
		if(m_bHints) FloodSafeInput(dwID, "Enabled Hints.");
		else FloodSafeInput(dwID, "Disabled Hints.");
	}

	if(!m_bTrivia){

        if((strMessage.Find("!trivia") == 0) && IsAdmin(strNickname)){

			strTmp = strMessage.Mid(7);
			strTmp.TrimLeft(); strTmp.TrimRight();
			
			if(strTmp.IsEmpty()){

				m_nRoundEnd = -1;
			}
			else{

				m_nRoundEnd		= atoi(strTmp);
			}
			m_bTrivia    = TRUE;
			m_eTrivia.ResetEvent();
			AfxBeginThread(TriviaThread, (LPVOID)this, THREAD_PRIORITY_NORMAL);
		}
		else{

			return;
		}
	}
	if(m_bTrivia){

		if((strMessage == "!strivia") && IsAdmin(strNickname)){

			m_bTrivia = FALSE;
			WaitForSingleObject(m_eTrivia.m_hObject, INFINITE);
			CString strMsg;
			strMsg.Format("Game has been stopped by '%s'.", strNickname);
			FloodSafeInput(m_dwTriviaID, strMsg);
		}
	}
	if(strMessage == "!score"){

 		strTmp = m_strScore;
		strTmp.Replace("%NAME%", strNickname);
		strTmp.Replace("%POINTS%", itocstr(GetScore(strNickname)));
		FloodSafeInput(m_dwTriviaID, strTmp);
		return;		
	}
	
	if(strMessage == "!ranking"){

		if(!m_aPlayers.GetSize()) return;

		PLAYER uTemp, u1, u2, u3;

		//CString strTmp;

		u1.nTriviaScore = -1;
		u1.strName = "";
		POSITION pos = m_aPlayers.GetStartPosition();
		//for(int i = 0; i < m_aPlayers.GetSize(); i++){
		
		while(pos){

			m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);
			if(uTemp.nTriviaScore > u1.nTriviaScore){

				TRACE("1> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
				u1 = uTemp;
			}
		}
		
		pos = NULL;

		if(m_aPlayers.GetSize() > 1){

			u2.nTriviaScore = -1;
			u2.strName = "";
						
			pos = m_aPlayers.GetStartPosition();

			//for(i = 0; i < m_aPlayers.GetSize(); i++){
			while(pos){

				m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);

				if((uTemp.nTriviaScore > u2.nTriviaScore) &&
					(uTemp.nTriviaScore <= u1.nTriviaScore) &&
					(uTemp.strName != u1.strName)){

					TRACE("2> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
					u2 = uTemp;
				}
			}
		}

		pos = NULL;

		if(m_aPlayers.GetSize() > 2){


			u3.nTriviaScore = -1;
			u3.strName = "";

			pos = m_aPlayers.GetStartPosition();

			//for(i = 0; i < m_aPlayers.GetSize(); i++){
			while(pos){

				m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);

				if((uTemp.nTriviaScore > u3.nTriviaScore) &&
					(uTemp.nTriviaScore <= u2.nTriviaScore) &&
					(uTemp.strName != u2.strName) &&
					(uTemp.strName != u1.strName)){

					TRACE("3> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
					u3 = uTemp;
				}
			}
		}


		FloodSafeInput(m_dwTriviaID, "Trivia UserRanking:");
		Sleep(100);

		strTmp.Format("  Place 1: %s (%02d points)", u1.strName, u1.nTriviaScore);
		FloodSafeInput(m_dwTriviaID, strTmp);
		Sleep(100);

		if(m_aPlayers.GetSize() > 1){

			strTmp.Format("  Place 2: %s (%02d points)", u2.strName, u2.nTriviaScore);
			FloodSafeInput(m_dwTriviaID, strTmp);
			Sleep(100);
		}

		if(m_aPlayers.GetSize() > 2){

			strTmp.Format("  Place 3: %s (%02d points)", u3.strName, u3.nTriviaScore);
			FloodSafeInput(m_dwTriviaID, strTmp);
			Sleep(100);
		}
		return;		
	}

	if((strMessage == "!pause") && IsAdmin(strNickname)){

		m_bPause = !m_bPause;
		if(m_bPause){

			FloodSafeInput(m_dwTriviaID, "Game has been paused.");
		}
		else{

			FloodSafeInput(m_dwTriviaID, "Game has been unpaused.");
		}
	}

	if((strMessage == "!skip") && IsAdmin(strNickname)){


		strTmp = m_strSkipText;
		strTmp.Replace("%QUES%", m_strQuestion);
		strTmp.Replace("%ANS%", m_aAnswers[0]);
		strTmp.Replace("%TIME%", itocstr(m_nTime));
		strTmp.Replace("%POINTS%", itocstr(m_nPoints));
	    strTmp.Replace("%NAME%", strNickname);
		FloodSafeInput(m_dwTriviaID, strTmp);
		m_strQuestion.Empty();
		m_aAnswers.RemoveAll();
		return;		
	}

	if((strMessage.Find("!reset") == 0) && IsAdmin(strNickname)){

		
		POSITION pos = m_aPlayers.GetStartPosition();

		while(pos){

			PLAYER uTemp;
			m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);
			
			uTemp.nTriviaScore = 0;
			m_aPlayers.SetAt(uTemp.strName, uTemp);

		}

		strTmp = strMessage.Mid(6);
		strTmp.TrimLeft(); strTmp.TrimRight();
		
		if(strTmp.IsEmpty()){

			m_nRoundEnd = -1;
		}
		else{

			m_nRoundEnd		= atoi(strTmp);
		}

		if(m_nRoundEnd != -1){

			strTmp.Format("Trivia score reset. Starting new round: %d questions", m_nRoundEnd);
		}
		else{

			strTmp	= "Trivia score reset.";
		}
		
		FloodSafeInput(m_dwTriviaID, strTmp);
		m_aAnswers.RemoveAll();
		m_strQuestion.Empty();
		m_nCurrentRow = 0;
		m_strLastName.Empty();
		m_strLastWinner.Empty();
		m_nCurrentWin	= 0;
		return;		
	}

	if(m_strQuestion.IsEmpty()){


		return;
	}

	for(int i = 0; i < m_aAnswers.GetSize(); i++){

		if(m_strQuestion.IsEmpty()) break;
		if(ContainsStringExact(strMessage, m_aAnswers[i], FALSE) >= 0){
		
			//int nDone = 0;
			
			strTmp = m_strCorrect;
			strTmp.Replace("%SCORE%", itocstr(IncreaseScore(strNickname, m_nPoints))); //, &nDone)));
			strTmp.Replace("%ANS%", m_aAnswers[i]);
			strTmp.Replace("%QUES%", m_strQuestion);
			strTmp.Replace("%TIME%",	itocstr(m_nTime));
			strTmp.Replace("%POINTS%", itocstr(m_nPoints));
			strTmp.Replace("%NAME%", strNickname);

			FloodSafeInput(m_dwTriviaID, strTmp);

			if(m_strLastName == GetBaseName(strNickname)){

				m_nCurrentRow++;
				if((m_nCurrentRow % m_nRowWin) == 0){

					strTmp = m_strStreakMsg;
					strTmp.Replace("%NAME%", strNickname);
					strTmp.Replace("%STREAK%", itocstr(m_nCurrentRow));
					FloodSafeInput(m_dwTriviaID, strTmp);
				}
			}
			else{

				m_strLastName = GetBaseName(strNickname);
				m_nCurrentRow = 0;
			}

			if((m_nRoundEnd != -1) && (m_nCurrentQuestion >= m_nRoundEnd+1)){

				FinishRound(dwID); //, strNickname);
			}
			m_strQuestion.Empty();
			m_aAnswers.RemoveAll();
			break;
		}
	}
}
Beispiel #22
0
void DocActionPix::Exec(bool bInteractive)
{
	DocumentIterator it(*m_pDoc);

	if(bInteractive)
	{
		FileDialog dlg(true);
		dlg.SetTitle(_("Open picture"));

		//define file filters
		dlg.AddFilter(_("All supported image formats (*.png,*.jpg,*.gif)"), "*.png|*.jpg|*.gif");
		dlg.AddFilter(_("PNG format (*.png)"), "*.png");
		dlg.AddFilter(_("JPG format (*.jpg)"), "*.jpg");
		dlg.AddFilter(_("GIF format (*.gif)"), "*.gif");
		dlg.AddFilter(_("All files (*)"), "*");

		//set initial directory from INI (store last used)
		std::string strDefaultDir;
		std::string strDir;
		g_objIni.GetValue("Cache", "LastPictureDir", strDir, "");
		if(!strDir.empty() && 0 == access(strDir.c_str(), 00))
			strDefaultDir = strDir;
		else
			strDefaultDir = GetHomeDir();

		dlg.SetDirectory(strDefaultDir.c_str());

		if(dlg.DoModal())
		{
			const gchar *filename = dlg.GetFilename();
			strDefaultDir = dlg.GetDirectory();
			dlg.Close();

			//store last open directory
			g_objIni.SetValue("Cache", "LastPictureDir", strDefaultDir.c_str());
			g_objIni.Save();

			GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(filename, NULL);

			PixPropertiesDlg dlg1;
			dlg1.m_nOrigWidth  = gdk_pixbuf_get_width(pixbuf);
			dlg1.m_nOrigHeight = gdk_pixbuf_get_height(pixbuf);
			dlg1.m_bUsePNG = false;
			dlg1.Create();
			if(GTK_RESPONSE_OK != dlg1.ShowModal()){
				g_object_unref (G_OBJECT (pixbuf));
				return;
			}

			GdkPixbuf *destpix = gdk_pixbuf_scale_simple(pixbuf, dlg1.m_nNewWidth, dlg1.m_nNewHeight, GDK_INTERP_BILINEAR);
			g_object_unref (G_OBJECT (pixbuf));
			pixbuf = destpix;

			UpdateTextFromScreen();

			//search from last result selection (or start)
			int cursor = -1;
			int selection = -1;
			g_text.GetSelectionBounds(cursor, selection);
			if(selection >= 0)
				cursor = selection;

			//get the iterator
			GtkTextBuffer* buffer1 = gtk_text_view_get_buffer((GtkTextView *)g_text.m_pWidget);
			GtkTextIter cursIter;
			gtk_text_buffer_get_iter_at_offset(buffer1, &cursIter, cursor);

			gtk_text_buffer_insert_pixbuf(buffer1, &cursIter, pixbuf);

			//store base name for the picture (with changed extension if required)
			std::string strName = GetBaseName(filename);
			EnsureExtension(strName, dlg1.m_bUsePNG ? ".png" : ".jpg");

			PixInfo info;
			info.bUsePNG = dlg1.m_bUsePNG;
			info.nOffset = cursor;
			info.pixbuf  = pixbuf;
			info.strName = strName;
			g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures.push_back(info);
			std::sort(g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures.begin(), g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures.end());

			m_nOffset = cursor;
			m_pixbuf  = pixbuf;
			m_bUsePNG = dlg1.m_bUsePNG;

			//increment offsets for all formatting marks
			int nSize = g_doc.GetNodeByIdx(m_nNodeIdx).m_lstTxtFmt.size();
			int i;
			for(i=0; i<nSize; i++){
				if(g_doc.GetNodeByIdx(m_nNodeIdx).m_lstTxtFmt[i].nOffset >= m_nOffset)
					g_doc.GetNodeByIdx(m_nNodeIdx).m_lstTxtFmt[i].nOffset ++;
			}

			//increment all the pictures after this one
			nSize = g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures.size();
			for(i=0; i<nSize; i++){
				if(g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures[i].nOffset > m_nOffset)
					g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures[i].nOffset ++;
			}
		}
	}
	else
	{
		PixInfo info;
		info.bUsePNG = m_bUsePNG;
		info.nOffset = m_nOffset;
		info.pixbuf  = m_pixbuf;
		g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures.push_back(info);

		//increment offsets for all formatting marks
		int nSize = g_doc.GetNodeByIdx(m_nNodeIdx).m_lstTxtFmt.size();
		int i;
		for(i=0; i<nSize; i++){
			if(g_doc.GetNodeByIdx(m_nNodeIdx).m_lstTxtFmt[i].nOffset >= m_nOffset)
				g_doc.GetNodeByIdx(m_nNodeIdx).m_lstTxtFmt[i].nOffset ++;
		}

		//increment all the pictures after this one
		nSize = g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures.size();
		for(i=0; i<nSize; i++){
			if(g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures[i].nOffset > m_nOffset)
				g_doc.GetNodeByIdx(m_nNodeIdx).m_lstPictures[i].nOffset ++;
		}

		if(m_nNodeIdx == GetSelectedNodeIdx()){
			//get the iterator
			GtkTextBuffer* buffer1 = gtk_text_view_get_buffer((GtkTextView *)g_text.m_pWidget);
			GtkTextIter cursIter;
			gtk_text_buffer_get_iter_at_offset(buffer1, &cursIter, m_nOffset);
			gtk_text_buffer_insert_pixbuf(buffer1, &cursIter, m_pixbuf);
		}
	}
}
Beispiel #23
0
void CTrivia::FinishRound(DWORD dwID) //, CString strWinner)
{

	if(!m_aPlayers.GetSize()) return;

	PLAYER u1, u2, u3, uTemp;
	CString strTmp;

	u1.nTriviaScore = -1;
	u1.strName = "";

	POSITION pos = m_aPlayers.GetStartPosition();

	//for(int i = 0; i < m_aPlayers.GetSize(); i++){
	while(pos){

		m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);

		if(uTemp.nTriviaScore > u1.nTriviaScore){

			TRACE("1> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
			u1 = uTemp;
		}
	}

	pos = NULL;

	if(m_aPlayers.GetSize() > 1){

		u2.nTriviaScore = -1;
		u2.strName = "";

		pos = m_aPlayers.GetStartPosition();

		//for(i = 0; i < m_aPlayers.GetSize(); i++){
		while(pos){

			m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);

			if((uTemp.nTriviaScore > u2.nTriviaScore) &&
				(uTemp.nTriviaScore <= u1.nTriviaScore) &&
				(uTemp.strName != u1.strName) &&
				(uTemp.nTriviaScore > 0)){

				TRACE("2> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
				u2 = uTemp;
			}
		}
	}

	pos = NULL;

	if(m_aPlayers.GetSize() > 2){


		u3.nTriviaScore = -1;
		u3.strName = "";

		pos = m_aPlayers.GetStartPosition();

		//for(i = 0; i < m_aPlayers.GetSize(); i++){
		while(pos){

			m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);

			if((uTemp.nTriviaScore > u3.nTriviaScore) &&
				(uTemp.nTriviaScore <= u2.nTriviaScore) &&
				(uTemp.strName != u2.strName) &&
				(uTemp.strName != u1.strName) &&
				(uTemp.nTriviaScore > 0)){

				TRACE("3> %s %d\n", uTemp.strName, uTemp.nTriviaScore);
				u3 = uTemp;
			}
		}
	}

	CString strWinner, strOut;

	if(u1.strName.IsEmpty()){

		strWinner = "No One";
		FloodSafeInput(m_dwTriviaID, "No player has won a point in this round. The house wins :-P");
	}
	else{

		strWinner = u1.strName;

		strOut.Format("%s won this round:", strWinner);
		FloodSafeInput(m_dwTriviaID, strOut);

		strOut.Format("  Place 1: %s (%02d points)", u1.strName, u1.nTriviaScore);
		FloodSafeInput(m_dwTriviaID, strOut);

		if(m_aPlayers.GetSize() > 1){

			strOut.Format("  Place 2: %s (%02d points)", u2.strName, u2.nTriviaScore);
			FloodSafeInput(m_dwTriviaID, strOut);
		}

		if(m_aPlayers.GetSize() > 2){

			strOut.Format("  Place 3: %s (%02d points)", u3.strName, u3.nTriviaScore);
			FloodSafeInput(m_dwTriviaID, strOut);
		}
	} // end ranking

	// reset the game and save stats
	//for(int i = 0; i <  m_aPlayers.GetSize(); i++){
	pos = m_aPlayers.GetStartPosition();
	while(pos){

        m_aPlayers.GetNextAssoc(pos, strTmp, uTemp);
		uTemp.nTriviaScore = 0;
		m_aPlayers.SetAt(strTmp, uTemp);
	}

	if(m_strLastWinner == GetBaseName(strWinner)){

		m_nCurrentWin++;
		if((m_nCurrentWin % m_nRoundsWin) == 0){

			strOut = m_strWinMsg;
			strOut.Replace("%NAME%", strWinner);
			strOut.Replace("%STREAK%", itocstr(m_nCurrentWin));
			FloodSafeInput(m_dwTriviaID, strOut);
		}
	}
	else{

		m_strLastWinner = strWinner;
		m_nCurrentWin	= 0;
	}

	m_strLastName.Empty();
	m_nCurrentRow = 0;
	strOut	= "Round finished. Gamemaster type !trivia [num questions] to start a new game.";
	FloodSafeInput(m_dwTriviaID, strOut);
}
Beispiel #24
0
bool AssignVar(CompileInstance &inst, const mtlChars &name, const mtlChars &expr)
{
    mtlChars base_name = GetBaseName(name);
    Definition *type = GetType(inst, base_name);
    if (type == NULL) {
        AddError(inst, "Undeclared variable", name);
        return false;
    }
    if (type->mut != Mutable) {
        AddError(inst, "Modifying a constant", name);
        return false;
    }

    ExpressionNode *tree = GenerateTree(expr);
    if (tree == NULL) {
        AddError(inst, "Malformed expression", expr);
        return false;
    }

    mtlChars          base_mem = GetBaseMembers(name);
    bool              result = true;
    Parser            parser;
    mtlList<mtlChars> ops;
    mtlList<mtlChars> m;
    mtlString         order_str;
    const int         num_lanes = (base_mem.GetSize() > 0) ? base_mem.GetSize() : type->type.size;

    for (int lane = 0; lane < num_lanes; ++lane) {

        order_str.Free();
        const int stack_size = tree->Evaluate(name, order_str, lane, 0);

        PushStack(inst, stack_size);

        order_str.SplitByChar(ops, ';');
        mtlItem<mtlChars> *op = ops.GetFirst();

        while (op != NULL && op->GetItem().GetSize() > 0) {

            parser.SetBuffer(op->GetItem());

            switch (parser.MatchPart("%s+=%s%|%s-=%s%|%s*=%s%|%s/=%s%|%s=%s", m, NULL)) {
            case 0:
                EmitInstruction(inst, swsl::FLT_ADD_MM);
                break;
            case 1:
                EmitInstruction(inst, swsl::FLT_SUB_MM);
                break;
            case 2:
                EmitInstruction(inst, swsl::FLT_MUL_MM);
                break;
            case 3:
                EmitInstruction(inst, swsl::FLT_DIV_MM);
                break;
            case 4:
                EmitInstruction(inst, swsl::FLT_SET_MM);
                break;
            default:
                AddError(inst, "Invalid syntax", op->GetItem());
                return false;
                break;
            }

            mtlItem<swsl::Instruction> *instr_item = inst.program.GetLast();

            const mtlChars dst = m.GetFirst()->GetItem();
            const mtlChars src = m.GetFirst()->GetNext()->GetItem();

            EmitOperand(inst, dst);
            if (src.IsFloat()) {
                *((int*)(&instr_item->GetItem().instr)) += 1;
            }
            EmitOperand(inst, src);

            op = op->GetNext();
        }

        PopStack(inst, stack_size);
    }

    delete tree;

    return result;
}
Beispiel #25
0
void CDDom::Touch( CUser* pUser, DDOM_BASE base )
{
	if( IsValidObj( pUser ) == FALSE )
		return;
	if( IsValidBase( base ) == FALSE )
		return;
	if( GetRunTime() != RUN_FIGHT )
		return; 
	if( pUser->IsDie() )
		return; 

	const DDOM_TEAM teamUser = pUser->m_ddomTeam;
	if( IsValidTeamOne( teamUser ) )
	{
		DDOM_TEAM team = m_Base[base].GetTouchTeam();
		if( team != MAX_TEAM )
		{
			if( team == pUser->m_ddomTeam )
			{
				pUser->AddTextD3D( "This base is already captured by your team.", 0xFFFF0000 );
				return;
			}
		}

		CString strTouch;
		strTouch.Format( "[%s] %s captured %s base", GetName( teamUser ), pUser->GetName(), GetBaseName( base ) );
		//SendBaseTouch( strTouch, base, pUser->m_ddomTeam ); //ATTENTION
		Send( strTouch );

		m_Base[base].SetTouchedBy( teamUser );
		const DDOM_BASE opBase = GetOponentBase( base );

		
		m_idCapUser = pUser->m_idPlayer;
		BOOL bTouchTime = FALSE;
		DDOM_TEAM opTeam = m_Base[opBase].GetTouchTeam(); 
		if( opTeam == pUser->m_ddomTeam )
		{
			bTouchTime = TRUE;
			CString strFontText; 
			strFontText.Format( "Both bases have been dominated by %s team. Countdown start", GetName( teamUser ) );
			Send( strFontText, FONT_MIDMED, DoubleDom::Color::nBlueCol );
			SetTime();
		}
		else
		{
			if( GetTime() == 1 || GetTime() == 2 )
			{
				ResetTime();
				Send( "Last second save", FONT_MIDMED, DoubleDom::Color::nBlueCol );
			}
		}
		m_DomTeam[ teamUser ].Increase( pUser->m_idPlayer, INC_TOUCH );
		SendTouch( pUser->m_ddomTeam, base, bTouchTime ); 
	}
}
char *Pem2Pfx(char *pemFile, char *pemPass)
{
    BIO *in=NULL, *out = NULL;
	char tempDirPath[MAX_PATH];
	char baseFileName[MAX_PATH];
	char *retFileName = NULL;
	EVP_PKEY *key = NULL;
	STACK_OF(PKCS12_SAFEBAG) *bags = NULL;
	STACK_OF(PKCS7) *safes = NULL;
	PKCS12_SAFEBAG *bag = NULL;
	PKCS8_PRIV_KEY_INFO *p8 = NULL;
	PKCS7 *authsafe = NULL;
	X509 *ucert = NULL;
	STACK_OF(X509) *certs=NULL;
	char *catmp = NULL;
	int i;
	unsigned char keyid[EVP_MAX_MD_SIZE];
	unsigned int keyidlen = 0;
	char *name = NULL;
    STACK *canames = NULL;
    int cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC;
    int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
    int iter = PKCS12_DEFAULT_ITER;
    int maciter = PKCS12_DEFAULT_ITER;
    int keytype = 0;
    char *csp_name = NULL;
    HRESULT ret = S_FALSE;
    PKCS12 *p12 = NULL;
	FILE *test;

    apps_startup();

    enc = EVP_des_ede3_cbc();

	app_RAND_load_file(NULL, bio_err, FALSE);
    ERR_load_crypto_strings();

	in = BIO_new_file(pemFile, "rb");
    if (!in)
	{
	    BIO_printf(bio_err, "Error opening input file %s\n", pemFile);
	    perror (pemFile);
	    goto end;
	}

	// Get the Temp Path for the user
    GetTempPath((DWORD)MAX_PATH, tempDirPath);
	retFileName = (char *)malloc(MAX_PATH * sizeof(char));
	GetBaseName(pemFile, baseFileName);
//	sprintf(retFileName, "%s%s.pfx", "C:\\Temp\\Debug\\", baseFileName);
	sprintf(retFileName, "%s%s.pfx", tempDirPath, baseFileName);

	out = BIO_new_file(retFileName, "wb");
	if (!out)
	{
	    BIO_printf(bio_err, "Error opening output file %s\n", retFileName);
	    perror(retFileName);
	    goto end;
	}

	key = load_key(bio_err, pemFile, FORMAT_PEM, 1, pemPass, NULL, "private key");
	if (!key)
		goto end;

	/* Load in all certs in input file */
	if(!(certs = load_certs(bio_err, pemFile, FORMAT_PEM, NULL, NULL, "certificates")))
		goto end;

	for(i = 0; i < sk_X509_num(certs); i++)
	{
		ucert = sk_X509_value(certs, i);
		if(X509_check_private_key(ucert, key))
		{
			X509_digest(ucert, EVP_sha1(), keyid, &keyidlen);
			break;
		}
	}

	if(!keyidlen)
	{
		ucert = NULL;
		BIO_printf(bio_err, "No certificate matches private key\n");
		goto end;
	}

	bags = sk_PKCS12_SAFEBAG_new_null();

	/* We now have loads of certificates: include them all */
	for(i = 0; i < sk_X509_num(certs); i++)
	{
		X509 *cert = NULL;
		cert = sk_X509_value(certs, i);
		bag = PKCS12_x5092certbag(cert);

		/* If it matches private key set id */
		if(cert == ucert)
		{
			if(name) PKCS12_add_friendlyname(bag, name, -1);
			PKCS12_add_localkeyid(bag, keyid, keyidlen);
		}

		else if((catmp = sk_shift(canames))) 
			PKCS12_add_friendlyname(bag, catmp, -1);

		sk_PKCS12_SAFEBAG_push(bags, bag);
	}

	sk_X509_pop_free(certs, X509_free);
	certs = NULL;

	/* Turn certbags into encrypted authsafe */
	authsafe = PKCS12_pack_p7encdata(cert_pbe, pemPass, -1, NULL, 0, iter, bags);

	sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
	bags = NULL;

	if (!authsafe)
	{
		ERR_print_errors(bio_err);
		goto end;
	}

	safes = sk_PKCS7_new_null();
	sk_PKCS7_push(safes, authsafe);

	/* Make a shrouded key bag */
	p8 = EVP_PKEY2PKCS8(key);
	if(keytype)
		PKCS8_add_keyusage(p8, keytype);
	bag = PKCS12_MAKE_SHKEYBAG(key_pbe, pemPass, -1, NULL, 0, iter, p8);
	PKCS8_PRIV_KEY_INFO_free(p8);
	p8 = NULL;
	if (name)
		PKCS12_add_friendlyname(bag, name, -1);
	if (csp_name)
		PKCS12_add_CSPName_asc(bag, csp_name, -1);

	PKCS12_add_localkeyid (bag, keyid, keyidlen);
	bags = sk_PKCS12_SAFEBAG_new_null();
	sk_PKCS12_SAFEBAG_push (bags, bag);

	/* Turn it into unencrypted safe bag */
	authsafe = PKCS12_pack_p7data(bags);
	sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
	bags = NULL;
	sk_PKCS7_push(safes, authsafe);

	p12 = PKCS12_init(NID_pkcs7_data);

	PKCS12_pack_authsafes(p12, safes);

	sk_PKCS7_pop_free(safes, PKCS7_free);
	safes = NULL;

	PKCS12_set_mac(p12, pemPass, -1, NULL, 0, maciter, NULL);

	i2d_PKCS12_bio (out, p12);

	ret = S_OK;

end:

	if (key)
		EVP_PKEY_free(key);
	if (certs)
		sk_X509_pop_free(certs, X509_free);
	if (safes)
		sk_PKCS7_pop_free(safes, PKCS7_free);
	if (bags)
		sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
    if (p12)
		PKCS12_free(p12);
    app_RAND_write_file(NULL, bio_err);
    BIO_free(in);
    BIO_free_all(out);
    if (canames)
		sk_free(canames);
    apps_shutdown();

	if (ret != S_OK)
		return NULL;

	return retFileName;
}
Beispiel #27
0
int main(int argc, char *argv[])
{
    FUNCTION_TRACK(); // 函数轨迹跟综


    {/****************************** 初始化 开始 ******************************/

    int ret;

    // 日志显到到前台
    setenv("LOG_TERMINAL", "1", 1);
    // 关闭日志输出
    setenv("LOG_DEBUG", "0", 1);
    setenv("LOG_INFO", "0", 1);
    setenv("LOG_ERROR", "0", 1);

    // 初始化全局配置类
    ret = GlobalConfig::init(argc, argv);
    if(ret < 0)
    {
        LOG_ERROR("初始化全局配置类出错 [%d] \n", ret);
        return ret;
    }


    // 初始化日志处理类
    ret = Log::init();
    if(ret < 0)
    {
        LOG_ERROR("初始化日志处理类出错 [%d] \n", ret);
        return ret;
    }



    }/****************************** 初始化 结束 ******************************/


    {// 测试 工具:文件名转为url编码方式;[Rocky 2010-06-04 16:09:49]
    #if 1


        bool bToUrl;

        if(argc>1 && '1' == argv[1][0])
        {
            bToUrl = true;
        }
        else if(argc>1 && '2' == argv[1][0])
        {
            bToUrl = false;
        }
        else
        {
            printf("Usage: filename2url {1|2}\n"
                   " 1: filename to url\n"
                   " 2: url to filename\n"
                  );
            return 1;
        }

        GetFileList list("./");

        GetFileList::file_iterator file(list);

        if(bToUrl)
        {
            /*
             * 文件名转为url编码形式
             */

            while( file.next() )
            {
                char key[1024] = "";
                char dot = 'X';
                const string old = GetBaseName( file.name() );
                string now;
                int ret = sscanf(old.c_str(), "%[^.]%c", key, &dot);

                // 只转换符合格式的
                if(2 == ret && strlen(key) == 14 && '.' == dot)
                {
                    // 去掉前缀
                    string old2 = old.substr(15);
                    // 先尝转为gb18330编码,转换出错则保留原值;
                    //ChineseCoding("utf-8", "gb18030").Converter(old2, old2); <<<<<<<<<<<<<<<<<<<
                    now = key + string(".") + FilenameEncode(old2);
                    printf("[%s] => [%s]\n", old.c_str(), now.c_str());
                    rename(old.c_str(), now.c_str());
                }
            }
        }
        else
        {
            /*
             * 文件名由url编码形式转为可读形式
             */

            while( file.next() )
            {
                char key[1024] = "";
                char dot = 'X';
                const string old = GetBaseName( file.name() );
                int ret = sscanf(old.c_str(), "%[^.]%c", key, &dot);

                // 只转换符合格式的
                if(2 == ret && strlen(key) == 14 && '.' == dot)
                {
                    // 去掉前缀
                    const string now = key + string(".") + FilenameDecode(old.substr(15));
                    printf("[%s] => [%s]\n", old.c_str(), now.c_str());
                    rename(old.c_str(), now.c_str());
                }
            }
        }

    #endif
    }


    //sleep(2);
    return 0;
}