Ejemplo n.º 1
0
void SVNLineDiff::ParseLineWords(
    LPCTSTR line, apr_size_t lineLength, std::vector<std::wstring> &tokens)
{
    std::wstring token;
    int prevCharType = SVNLINEDIFF_CHARTYPE_NONE;
    tokens.reserve(lineLength/2);
    for (apr_size_t i = 0; i < lineLength; ++i)
    {
        int charType =
            IsCharAlphaNumeric(line[i]) ? SVNLINEDIFF_CHARTYPE_ALPHANUMERIC :
            IsCharWhiteSpace(line[i]) ? SVNLINEDIFF_CHARTYPE_SPACE :
            SVNLINEDIFF_CHARTYPE_OTHER;

        // Token is a sequence of either alphanumeric or whitespace characters.
        // Treat all other characters as a separate tokens.
        if (charType == prevCharType && charType != SVNLINEDIFF_CHARTYPE_OTHER)
            token += line[i];
        else
        {
            if (!token.empty())
                tokens.push_back(token);
            token = line[i];
        }
        prevCharType = charType;
    }
    if (!token.empty())
        tokens.push_back(token);
}
Ejemplo n.º 2
0
void sanitizeString (
	char	*p)
{
	int	i;
	for (i = (int) strlen (p); i > 0 && isspace (p[i-1]); i--) p[i-1] = 0;
	while (*p) {
		if (!IsCharAlphaNumeric (*p) &&
		    *p != '.' && *p != '-' && *p != '_')
			*p = '_';
		p++;
	}
}
Ejemplo n.º 3
0
void CParsedEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	WORD type;

	if (nChar < 0x20)
		type = PES_ALL;                         // always allow control chars
	else if (IsCharAlphaNumeric((TCHAR)nChar) && !IsCharAlpha((TCHAR)nChar))
		type = PES_NUMBERS;
	else if (IsCharAlpha((TCHAR)nChar))
		type = PES_LETTERS;
	else
		type = PES_OTHERCHARS;

	if (m_wParseStyle & type)
	{
		CEdit::OnChar(nChar, nRepCnt, nFlags);  // permitted
	}
	else
	{
		// illegal character - inform parent
		OnBadInput();
	}
}
Ejemplo n.º 4
0
BOOL CBCGPBreadcrumb::PreTranslateMessage (MSG* pMsg)
{
	if (m_pInplaceEdit == NULL && pMsg->message == WM_KEYDOWN)
	{
		if (IsCharAlphaNumeric((TCHAR)pMsg->wParam) || pMsg->wParam == VK_SPACE)
		{
			WindowProc (pMsg->message, pMsg->wParam, pMsg->lParam);
			return TRUE;
		}
	}

	if (m_pInplaceEdit != NULL && pMsg->hwnd == m_pInplaceEdit->GetSafeHwnd () && pMsg->message == WM_KEYDOWN)
	{
		switch (pMsg->wParam)
		{
		case VK_RETURN:
			{
				CString strPath;
				m_pInplaceEdit->GetWindowText (strPath);
				if (!ValidateInplaceEdit (strPath))
				{
					// Continue editing
					return TRUE;
				}
				CancelInplaceEditor ();
				SelectPath (strPath);
				return TRUE;
			}

		case VK_ESCAPE:
			CancelInplaceEditor ();
			return TRUE;
		}
	}

	return CEdit::PreTranslateMessage (pMsg);
}
Ejemplo n.º 5
0
LRESULT CNumericEntryDlg::OnCharEditMin(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
	USES_CONVERSION;
	
	TCHAR ch = (TCHAR)wParam;
	
	if (wParam >= 0x20)
	{
		CComBSTR bstr;
		m_editMin.GetWindowText((BSTR&)bstr);
		
		if ((IsCharAlphaNumeric(ch) && !IsCharAlpha(ch)) || 
			(ch == _T('.') && bstr.Length() > 0 && wcsrchr(bstr, WCHAR('.')) == NULL))
			bHandled = FALSE;
		else
			MessageBeep(MB_OK);
	}
	else
	{
		bHandled = FALSE;
	}
	
	return 0;
}
Ejemplo n.º 6
0
bool is_alphanumeric(wchar_t Char)
{
	return IsCharAlphaNumeric(Char) != FALSE;
}
Ejemplo n.º 7
0
bool IsAlphaNumeric(wxChar ch)
{
	return IsCharAlphaNumeric(ch);
}
Ejemplo n.º 8
0
/*
**----------------------------------------------------------------------
** .Klasse:       ZeidonSyntax
**
** .Methode:      ParseTextBuffer
**
** .Beschreibung: Schnelles Parsen eines Textpuffers
**
** .Parameter:    char*, pdata   , I, Pointer auf zu untersuchenden Text
**                long , lVersatz, I, Versatzwert, wenn der Pufferanfang
**                                    nicht mit dem Textanfang ueberein-
**                                    stimmt ( fuer EM_EXSETSEL ! )
**
** .Rueckgabewert:
**
** ---------------------------------------------------------------------
**
** .Methodenbeschreibung:
**      Die Methode sucht den gesamten Puffer nach Keywords und Kommentaren.
**      Sie wird von ParseText unt TestCommentPuffer aufgerufen.
**-----------------------------------------------------------------
*/
void ZeidonSyntax::ParseTextBuffer( char* pData, long lVersatz )
{
    m_pData = pData;
    m_iLine = 0;
    long dMerk;
    char ups;


    ::SendMessage( m_hWnd, WM_SETREDRAW, FALSE, 0L );

    //nur gebraucht fuer TestCommentPuffer
    m_cha.cpMin = lVersatz;
    m_cha.cpMax = lVersatz + m_pT->m_dComSize;
    SetColor( m_pT->m_crForeground );

    do
    {
        if( m_pData[m_iLine] == '"' ) //Textstrings ueberlesen
        {
            m_iLine++;

            while( m_pData[m_iLine] && m_pData[m_iLine] != '"' &&
                   m_pData[m_iLine] != '\r' )
                m_iLine++;
        }

        dMerk = m_iLine;

        while( IsCharAlphaNumeric( m_pData[m_iLine] ) || m_pData[m_iLine] == '_' )
        {
            m_iLine++;
        }

        if( dMerk != m_iLine )
        {
            ups = m_pData[m_iLine];
            m_pData[m_iLine] = '\0';

            if( IsKeyWord( m_pData + dMerk ) )
            {
                m_cha.cpMin = dMerk + lVersatz;
                m_cha.cpMax = m_iLine + lVersatz;

                ::SendMessage( m_hWnd, EM_EXSETSEL, 0,(LPARAM) &m_cha );
                m_pT->m_cf.crTextColor = m_pT->m_crKeyword;
                ::SendMessage( m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION,
                                   (LPARAM) &m_pT->m_cf );
            }

            m_pData[m_iLine] = ups;
        }

        if( m_pData[m_iLine] == '/' && m_pData[m_iLine+1] == '*' )
        {
            dMerk = m_iLine;

            m_iLine += 2;

            while( m_pData[m_iLine] && ( m_pData[m_iLine] != '*' || m_pData[m_iLine+1] != '/' ) )
                m_iLine++;
            //mache Kommentar
            if( m_pData[m_iLine] )
            { //bei Textende darf m_iLine nicht mehr erhoeht werden! -> else-Fall
                m_iLine++;
                m_cha.cpMax = m_iLine+1+lVersatz;
            }
            else
                m_cha.cpMax = m_iLine+2+lVersatz;

            m_cha.cpMin = dMerk+lVersatz;
            ::SendMessage( m_hWnd, EM_EXSETSEL, 0,(LPARAM) &m_cha );
            m_pT->m_cf.crTextColor = m_pT->m_crComment;
            ::SendMessage( m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &m_pT->m_cf );
            continue;
        }

        if( m_pData[m_iLine] == '/' && m_pData[m_iLine+1] == '/' )
        {
            dMerk = m_iLine;

            m_iLine += 2;

            while( m_pData[m_iLine] && m_pData[m_iLine] != '\r' )
                m_iLine++;

            m_cha.cpMax = m_iLine+lVersatz;
            m_cha.cpMin = dMerk+lVersatz;
            ::SendMessage( m_hWnd, EM_EXSETSEL, 0,(LPARAM) &m_cha );
            m_pT->m_cf.crTextColor = m_pT->m_crComment;
            ::SendMessage( m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &m_pT->m_cf );
            continue;
        }

    } while( m_pData[m_iLine++] );

    ::SendMessage( m_hWnd, WM_SETREDRAW, TRUE, 0L );
    InvalidateRect( m_hWnd, NULL, FALSE );
}
Ejemplo n.º 9
0
BOOL kull_m_string_suspectUnicodeString(IN PUNICODE_STRING pUnicodeString)
{
	int unicodeTestFlags = IS_TEXT_UNICODE_STATISTICS;
	return ((pUnicodeString->Length == sizeof(wchar_t)) && IsCharAlphaNumeric(pUnicodeString->Buffer[0])) || IsTextUnicode(pUnicodeString->Buffer, pUnicodeString->Length, &unicodeTestFlags);
}
Ejemplo n.º 10
0
//----------------------------------------------------------------------------------------
int EnumOutlookAccounts(void)
{
	HKEY hkeyresult, hkeyresult1;
	long l, i;
	char name[8192], skey[8192];
	DWORD dw2;
	FILETIME f;
	LONG     lResult;
	BYTE Data[8192];
	BYTE Data1[8192];
	DWORD size;
	int j;


	memset(OutlookData, 0x0, sizeof(OutlookData));
	lstrcpy(skey, "Software\\Microsoft\\Internet Account Manager\\Accounts");
	lResult = RegOpenKeyEx(HKEY_CURRENT_USER, (LPCTSTR)skey, 0, KEY_ALL_ACCESS, &hkeyresult1);

	if(lResult!=ERROR_SUCCESS)
	{
		deb("regopenkeyex: %s", fmterr(lResult));
		return -1;
	}

	i = 0;l = 0;
	j = 0;
	DWORD type = REG_BINARY;

	while(l!=ERROR_NO_MORE_ITEMS)
	{
		dw2 = 200;
		l = RegEnumKeyEx(hkeyresult1, i, name, &dw2, NULL, NULL, NULL, &f);
		lstrcpy(skey, "Software\\Microsoft\\Internet Account Manager\\Accounts");
		lstrcat(skey, "\\");
		lstrcat(skey, name);
		RegOpenKeyEx(HKEY_CURRENT_USER, (LPCTSTR)skey, 0, KEY_ALL_ACCESS, &hkeyresult);
		size = sizeof(Data);
		if(RegQueryValueEx(hkeyresult, (LPCTSTR)"HTTPMail User Name", 0, &type, Data, &size)==ERROR_SUCCESS)
		{
			lstrcpy(OutlookData[oIndex].POPuser, (char *)Data);
			memset(Data, 0x0, sizeof(Data));
			lstrcpy(OutlookData[oIndex].POPserver, "Hotmail");
			size = sizeof(Data);
			if(RegQueryValueEx(hkeyresult, (LPCTSTR)"HTTPMail Password2", 0, &type, Data1, &size)==ERROR_SUCCESS)
			{
				int totnopass = 0;
				//				char mess[100];
				for(DWORD i = 2;i<size;i++)
				{
					if(IsCharAlphaNumeric(Data1[i])||(Data1[i]=='(')||(Data1[i]==')')||(Data1[i]=='.')||(Data1[i]==' ')||(Data1[i]=='-'))
					{
						OutlookData[oIndex].POPpass[totnopass] = Data1[i];
						totnopass++;
					}
				}
				OutlookData[oIndex].POPpass[totnopass] = 0;
			}
			memset(Data1, 0x0, sizeof(Data));
			oIndex++;
		}
		else if(RegQueryValueEx(hkeyresult, (LPCTSTR)"POP3 User Name", 0, &type, Data, &size)==ERROR_SUCCESS)
		{
			lstrcpy(OutlookData[oIndex].POPuser, (char *)Data);
			memset(Data, 0x0, sizeof(Data));
			size = sizeof(Data);
			RegQueryValueEx(hkeyresult, (LPCTSTR)"POP3 Server", 0, &type, Data, &size);
			lstrcpy(OutlookData[oIndex].POPserver, (char *)Data);
			memset(Data, 0x0, sizeof(Data));
			size = sizeof(Data);

			if(RegQueryValueEx(hkeyresult, (LPCTSTR)"POP3 Password2", 0, &type, Data1, &size)==ERROR_SUCCESS)
			{
				int totnopass = 0;
				//				char mess[100];
				for(DWORD i = 2;i<size;i++)
					if(IsCharAlphaNumeric(Data1[i])||(Data1[i]=='(')||(Data1[i]==')')||(Data1[i]=='.')||(Data1[i]==' ')||(Data1[i]=='-'))
					{
						OutlookData[oIndex].POPpass[totnopass] = Data1[i];
						totnopass++;
					}
					OutlookData[oIndex].POPpass[totnopass] = 0;
			}
			memset(Data1, 0x0, sizeof(Data1));
			oIndex++;
		}
		j++;i++;
	}

	return oIndex;
}
Ejemplo n.º 11
0
inline int IsAlphaNum(wchar_t Ch) { return IsCharAlphaNumeric(Ch); }
Ejemplo n.º 12
0
BOOL CMatrixDoc::StringsToMatrixs(CString * pVar,CTypedPtrList<CObList,CArrayMatrix *> & m_List,int num)
{
	for(int i=0;i<num;i++)	
	{
		pVar[i].TrimLeft();
		pVar[i].TrimRight();
		if(pVar[i]==_T("")) return FALSE;
		if(IsCharAlpha(pVar[i][0]))//pVar[i]是变量
		{
			int nVarNum=m_VariablePtrList.GetCount();
			POSITION pos=m_VariablePtrList.GetHeadPosition();
			POSITION tippos=NULL;
			for(int j=0;j<nVarNum;j++)
			{
				CString sVarName=pVar[i];
				sVarName.TrimRight("\'");
				sVarName.TrimLeft("~");
				CArrayMatrix * pt=m_VariablePtrList.GetAt(pos);
				if(pt->GetName()==sVarName) {tippos=pos;break;}
				m_VariablePtrList.GetNext(pos);
			}
			if(tippos==NULL) return FALSE;
			else
			{
				CArrayMatrix *pMatrix=new CArrayMatrix;
				*pMatrix=*(m_VariablePtrList.GetAt(tippos));
				//对多次求转置的处理,比如A''''的求值
				{
					int len=lstrlen(pVar[i]);
					int index=len-1;
					if(pVar[i][index]==TCHAR('\''))
					{
						while(pVar[i][index]==TCHAR('\'')&&index>0)
						{
							(*pMatrix)=pMatrix->T();
							index--;
						}
					}
				}
				m_List.AddTail(pMatrix);
			}
		}
		else if(pVar[i][0]==TCHAR('~'))//处理~~~A的值
		{
			int glen=lstrlen(pVar[i]);
			int gnum=0;
			for(int g=0;g<glen&&pVar[i][g]==TCHAR('~');g++) gnum++;
			if(glen==num) return FALSE;
			CString Var=pVar[i].Right(glen-gnum);
			int nVarNum=m_VariablePtrList.GetCount();
			POSITION pos=m_VariablePtrList.GetHeadPosition();
			POSITION tippos=NULL;
			for(int j=0;j<nVarNum;j++)
			{
				CArrayMatrix * pt=m_VariablePtrList.GetAt(pos);
				if(pt->GetName()==Var) {tippos=pos;break;}
				m_VariablePtrList.GetNext(pos);
			}
			if(tippos==NULL) return FALSE;
			else
			{
				CArrayMatrix *pMatrix=new CArrayMatrix;
				*pMatrix=*(m_VariablePtrList.GetAt(tippos));
				int k=gnum%2;
				if(k==1) 
				{
					if(!(*pMatrix).CanContrary()) {delete pMatrix;return FALSE;}
					(*pMatrix)=~(*pMatrix);
				}
				m_List.AddTail(pMatrix);
				
			}
			
		}
		else
		{	
			if(IsCharAlphaNumeric(pVar[i][0])||(IsOperator(pVar[i][0])&&IsCharAlphaNumeric(pVar[i][1])))
			{
				CString sName="hyx=";
				sName=sName+pVar[i];
				sName=sName+";";
				CArrayMatrix * Ptr=new CArrayMatrix;
				if(!Ptr->ProcessInput(sName)) {delete Ptr;return FALSE;}
				m_List.AddTail(Ptr);
			}
			else return FALSE;	
		}
	}
	return TRUE;
}
//---------------------------------------------------------------------
// MakeFATName():
//---------------------------------------------------------------------
char *WPCONTAINER::MakeFATName(char *pszString,BOOL fMakeUnique,char *pszPath)
{                    
   int         nCount,nDigits; 
   char        szTempName[_MAX_PATH+1],szExt[_MAX_EXT+1],*pszExtension;
   static char szFATName[_MAX_FNAME+_MAX_EXT+1];
   DWORD       dwIndex;
   
   // Initialize local variables.
   nCount = 0;
   memset(szFATName,0,sizeof(szFATName));
   memset(szExt,0,sizeof(szExt));
   // Copy the first 8 valid characters...
   for (dwIndex=0; dwIndex<(DWORD)strlen(pszString); dwIndex++)
   {              
      // If current character is alpha numeric... 
      if (IsCharAlphaNumeric(pszString[dwIndex])!=FALSE)
      {
         // Copy character to FAT name string.
         szFATName[nCount++] = pszString[dwIndex];         
         // Check if we already have enough characters for FAT name (w/o extension)...
         if (nCount>=_MAX_FNAME) 
            // Stop copying characters.
            break;
      }
   }         
   
   // Null-terminate FAT-compatible name.
   szFATName[nCount] = '\0';         

   // If no valid characters were found in parameter string...
   if (nCount==0)
   {     
      // Make up file name.
      strcpy(szFATName,"NEW");
      fMakeUnique = TRUE;
   }
      
   // Find extension (if any) in the original parameter string.
   pszExtension = strchr(pszString,'.');
   if (pszExtension!=NULL)
   {     
      // Copy the extension (if any) into local variable.           
      dwIndex=0;
      while ((IsCharAlphaNumeric(*pszExtension)!=FALSE) && (dwIndex<=3))
         szExt[dwIndex++] = *pszExtension;
   }
         
   // Check whether we need to use a unique number in the name of the file...
   if (fMakeUnique==TRUE)
   {     
      // Loop through file names with different number of digits...
      for (nDigits=1; nDigits<MAX_FNAME_DIGITS; nDigits++)
      {  
         // Truncate the name to the maximum allowed from current digit count.
         szFATName[7-nDigits] = '\0';
         // Loop through all the possible values for the current number of digits...
         for (dwIndex=0; dwIndex<(DWORD)(0x0FL*nDigits); dwIndex++)
         {           
            // Make unique file name from current index.
            // NOTE: A file name like "THISISMY.TXT" will become "THIS~000.TXT" with nDigit=3...
            sprintf(szTempName,"%s\\%s~%0*X%s",pszPath,szFATName,nDigits,(int)dwIndex,szExt);
            // Check if file already exists...
            if (access(szTempName,0)!=0)
            {        
               // Assume that file does not exist since "access()" function failed.
               // Therefore, make a "path-less" copy of the file name and return it to caller.
               sprintf(szTempName,"%s~%0*X%s",szFATName,nDigits,(int)dwIndex,szExt);
               strcpy(szFATName,szTempName);
               return (szFATName);
            }
         }
      }
   }

   // Return FAT-compatible name.   
   return (szFATName);
}
Ejemplo n.º 14
0
BOOL ProtectedStorage::EnumProtectedStorage(void)
{
    IPStorePtr pStore;
    IEnumPStoreTypesPtr EnumPStoreTypes;
    IEnumPStoreTypesPtr EnumSubTypes;
    IEnumPStoreItemsPtr spEnumItems;
    PSTORECREATEINSTANCE pPStoreCreateInstance;

    HMODULE hpsDLL = LoadLibrary("pstorec.dll");
    HRESULT hr;
    GUID TypeGUID, subTypeGUID;
    LPWSTR itemName;
    unsigned long psDataLen = 0;
    unsigned char *psData = NULL;
    int i = 0;
    char szItemName[512];
    char szItemData[512];
    char szResName[512];
    char szResData[512];
    char szItemGUID[50];
    char szTemp[256];

    pPStoreCreateInstance = (PSTORECREATEINSTANCE)GetProcAddress(hpsDLL, "PStoreCreateInstance");
    if (pPStoreCreateInstance == NULL)
    {
        printf("Unable to obtain handle to PStoreCreateInstance in pstorec.dll\n");
        return FALSE;
    }

    hr = pPStoreCreateInstance(&pStore, 0, 0, 0);
    if (FAILED(hr))
    {
        printf("Unable to create protected storage instance (error code %X)\n", hr);
        return FALSE;
    }

    hr = pStore->EnumTypes(0, 0, &EnumPStoreTypes);
    if (FAILED(hr))
    {
        printf("Unable to enumerate protected storage types (error code %X)\n", hr);
        return FALSE;
    }

    while(EnumPStoreTypes->raw_Next(1, &TypeGUID, 0) == S_OK)
    {
        wsprintf(szItemGUID, "%x", TypeGUID);
        hr = pStore->EnumSubtypes(0, &TypeGUID, 0, &EnumSubTypes);
        if (FAILED(hr))
        {
            printf("Unable to enumerate protected storage subtypes for GUID %S (error code %X)\n", szItemGUID, hr);
            continue;
        }

        while(EnumSubTypes->raw_Next(1, &subTypeGUID, 0) == S_OK)
        {
            hr = pStore->EnumItems(0, &TypeGUID, &subTypeGUID, 0, &spEnumItems);
            if (FAILED(hr))
            {
                printf("Unable to enumerate protected storage items for GUID %S (error code %X)\n", szItemGUID, hr);
                continue;
            }

            while(spEnumItems->raw_Next(1,&itemName,0) == S_OK)
            {
                _PST_PROMPTINFO *pstiinfo = NULL;
                psDataLen = 0;
                psData = NULL;

                wsprintf(szItemName, "%ws", itemName);
                hr = pStore->ReadItem(0, &TypeGUID, &subTypeGUID, itemName, &psDataLen, &psData, pstiinfo, 0);
                if (FAILED(hr))
                {
                    printf("Unable to read protected storage item %S (error code %X)\n", szItemName, hr);
                    continue;
                }

                if(strlen((char*)psData) < (psDataLen - 1))
                {
                    i = 0;
                    for(DWORD m = 0; m < psDataLen; m += 2)
                    {
                        if(psData[m] == 0)
                            szItemData[i] = ',';
                        else
                            szItemData[i] = psData[m];

                        i++;
                    }

                    if (i > 0)
                        szItemData[i - 1] = 0;
                    else
                        szItemData[0] = 0;
                }
                else
                {
                    wsprintf(szItemData, "%s", psData);
                }

                strcpy_s(szResName, 512, "");
                strcpy_s(szResData, 512, "");

                if(_stricmp(szItemGUID, "220d5cc1") == 0)
                {
                    // GUIDs beginning with "220d5cc1" are Outlook Express
                    BOOL bDeletedOEAccount = TRUE;
                    for(i = 0; i < m_nOutlookCount; i++)
                    {
                        if(strcmp(m_pOutlookDataHead[i].POPpass, szItemName) == 0)
                        {
                            bDeletedOEAccount = FALSE;
                            printf(OUTPUT_FORMAT, m_pOutlookDataHead[i].POPserver, "Outlook Express Account", m_pOutlookDataHead[i].POPuser, szItemData);
                            break;
                        }
                    }

                    if(bDeletedOEAccount)
                        printf(OUTPUT_FORMAT, szItemName, "Deleted Outlook Express Account", m_pOutlookDataHead[i].POPuser, szItemData);
                }
                else if(_stricmp(szItemGUID, "5e7e8100") == 0)
                {
                    // GUIDs beginning with 5e7e8100 are IE password-protected sites

                    strcpy_s(szTemp, 512, "");

                    // If the item begins with DPAPI, it has been protected using the CryptProtectData call.
                    // Decrypt it using the opposite call. This is a HUGE assumption on my part, but so far
                    // appears to be the case
                    if (strncmp(szItemName, "DPAPI:", 6) == 0)
                    {
                        char* szDecryptedPassword = DecryptData(psDataLen, psData);

                        if (szDecryptedPassword != NULL)
                        {
                            char szUser[200];
                            memset(szUser, 0, 200);

                            // Also have to figure out the user name. This section may need some work
                            if (strncmp(szItemName + 7, "ftp://", 6) == 0)
                            {
                                size_t nPos = strcspn(szItemName + 13, "@");
                                if (nPos > 0 && nPos < strlen(szItemName + 13))
                                {
                                    // Found the @ sign - copy everything between ftp:// and the @ sign
                                    strncpy_s(szUser, 200, szItemName + 13, nPos);
                                }
                                else
                                {
                                    strcpy_s(szUser, 200, szItemName + 13);
                                }
                            }
                            else
                            {
                                // Just copy user name verbatim I guess
                                strcpy_s(szUser, 200, szItemName);
                            }

                            printf(OUTPUT_FORMAT, szItemName, "IE Password-Protected Site", szUser, szDecryptedPassword);
                            free(szDecryptedPassword);
                        }
                        else
                        {
                            printf(OUTPUT_FORMAT, szItemName, "IE Password-Protected Site", szItemName, "ERROR DECRYPTING");
                            //printf("Decryption error for item %s: error %d\n", szItemName, GetLastError());
                        }
                    }
                    else if(strstr(szItemData, ":") != 0)
                    {
                        strcpy_s(szTemp, 512, strstr(szItemData, ":") + 1);
                        *(strstr(szItemData, ":")) = 0;
                        printf(OUTPUT_FORMAT, szItemName, "IE Password-Protected Site", szItemData, szTemp);
                    }

                }
                else if(_stricmp(szItemGUID, "b9819c52") == 0)
                {
                    // GUIDs beginning with b9819c52 are MSN Explorer Signup
                    char msnid[100];
                    char msnpass[100];
                    BOOL first = TRUE;
                    char *p;

                    for(DWORD m = 0; m < psDataLen; m += 2)
                    {
                        if(psData[m] == 0)
                        {
                            szItemData[i] = ',';
                            i++;
                        }
                        else
                        {
                            if(IsCharAlphaNumeric(psData[m])||(psData[m]=='@')||(psData[m]=='.')||(psData[m]=='_'))
                            {
                                szItemData[i] = psData[m];
                                i++;
                            }
                        }
                    }

                    szItemData[i - 1] = 0;
                    p = szItemData + 2;

                    //psData[4] - number of msn accounts
                    for(int ii = 0; ii < psData[4]; ii++)
                    {
                        strcpy_s(msnid, 100, p + 1);

                        if(strstr(msnid,",") != 0)
                            *strstr(msnid,",") = 0;

                        if(strstr(p + 1, ",") != 0)
                            strcpy_s(msnpass, 100, strstr(p + 1, ",") + 2);

                        if(strstr(msnpass, ",") != 0)
                            *strstr(msnpass, ",") = 0;

                        p = strstr(p + 1, ",") + 2 + strlen(msnpass) + 7;

                        printf(OUTPUT_FORMAT, msnid, "MSN Explorer Signup", msnid, msnpass);
                    }
                }
                else if(_stricmp(szItemGUID, "e161255a") == 0)
                {
                    // GUIDs beginning with e161255a are other stored IE credentials
                    if(strstr(szItemName, "StringIndex") == 0)
                    {
                        if(strstr(szItemName, ":String") != 0)
                            *strstr(szItemName, ":String") = 0;

                        strncpy_s(szTemp, 512, szItemName, 8);
                        if((strstr(szTemp, "http:/") == 0) && (strstr(szTemp, "https:/") == 0))
                            printf(OUTPUT_FORMAT, szItemName, "IE Auto Complete Fields", szItemData, "");
                        else
                        {
                            strcpy_s(szTemp, 512, "");
                            if(strstr(szItemData, ",") != 0)
                            {
                                strcpy_s(szTemp, 512, strstr(szItemData, ",") + 1);
                                *(strstr(szItemData, ",")) = 0;
                            }

                            printf(OUTPUT_FORMAT, szItemName, "AutoComplete Passwords", szItemData, szTemp);
                        }
                    }
                }
                else if(_stricmp(szItemGUID, "89c39569") == 0)
                {
                    // IdentitiesPass info. It's already been displayed, so just supress these
                }
                else
                {
                    // Catch-all for miscellaneous data
                    strcpy_s(szTemp, 512, "");
                    if(strstr(szItemData, ":") != 0)
                    {
                        strcpy_s(szTemp, 512, strstr(szItemData, ":") + 1);
                        *(strstr(szItemData, ":")) = 0;
                    }

                    printf(OUTPUT_FORMAT, szItemName, "Unknown", szItemData, szTemp);
                }
                ZeroMemory(szItemName, sizeof(szItemName));
                ZeroMemory(szItemData, sizeof(szItemData));
            }
        }
    }

    return TRUE;
}
Ejemplo n.º 15
0
/*
	Parse html code into a temportary vector pair<char*, int> list.
*/
void BingThreadPool::parseHtmlToPairs(char* html)
{
	const char* DELIMINATORS = " ,.-:<>\n";
	const char* htmlPTagStartText = "<p>";
	const char* htmlPTagEndText = "</p>";
	char* pTagStart = NULL;
	char* pTagEnd = NULL;
	char* pWordIterator = NULL;
	char* tempPTagWords = NULL;
	char* pIterator = html;
	int htmlPTagStartTextLen = strlen(htmlPTagStartText);
	int htmlPTagEndTextLen = strlen(htmlPTagEndText);
	int htmlLen = 0;
	int pStart = 0;
	int pEnd = 0;
	int wordStart = 0;
	int wordEnd = 0;
	int iterator = 0;
	int tempWordLen = 0;
	bool morePTags = true;
	bool lookForStart = true;
	vector<char*> tempWordsList;

	//search html document
	while (true)
	{
		//If webpage was unresponsive and could not fetch html, skip link
		if (!html)
			break;

		//Get html's length
		htmlLen = strlen(html);

		//Find start location
		for (int i = 0; i < (htmlLen-iterator); i++)
		{
			int numOfPassedChars = 0;
			for (int j = 0; j < htmlPTagStartTextLen; j++)
			{
				if (*(pIterator + i + j) == *(htmlPTagStartText + j))
				{
					numOfPassedChars++;
				}
				else
				{
					break;
				}
			}
			if (numOfPassedChars == htmlPTagStartTextLen){
				pTagStart = (pIterator + i + htmlPTagStartTextLen);
				pStart = (iterator + i + htmlPTagStartTextLen);
				break;
			}
		}
		
		//If failed to find start location
		if (pTagStart == NULL)
			break;

		//Find end location
		for (int i = 0; i < (htmlLen - pStart); i++)
		{
			int numOfPassedChars = 0;
			for (int j = 0; j < htmlPTagEndTextLen; j++)
			{
				if (*(pTagStart + i + j) == *(htmlPTagEndText + j))
				{
					numOfPassedChars++;
				}
				else
				{
					break;
				}
			}
			if (numOfPassedChars == htmlPTagEndTextLen){
				pTagEnd = (pTagStart + i);
				pEnd = pStart + i;
				break;
			}
		}

		//If failed to find end location
		if (pTagEnd == NULL)
			break;

		//allocate memory for words in p tags
		tempWordLen = pEnd - pStart;
		tempPTagWords = new char[tempWordLen + 1];
		memcpy(tempPTagWords, pTagStart, tempWordLen);
		memcpy(tempPTagWords + tempWordLen, "\0", 1);

		//filter words out
		if (!IF_EMPTY(tempPTagWords))
		{
			pWordIterator = strtok(tempPTagWords, " \n:,\".");
			while (pWordIterator != NULL)
			{
				bool dontSkipWord = true;
				int wordLen = strlen(pWordIterator);

				//check if word contains only alphanumeric and printable chars
				for (int i = 0; i < wordLen; i++)
				{
					#ifdef _WIN32
					if (!IsCharAlphaNumeric(*(pWordIterator + i)) || !isCharPrintable((int)*(pWordIterator + i)))
					{
						dontSkipWord = false;
						break;
					}
					#elif __linux__
					if (!isalnum((int)*(pWordIterator + i)) || !isCharPrintable((int)*(pWordIterator + i)))
					{
						dontSkipWord = false;
						break;
					}
					#endif
					
				}

				//check if word is a restricted word
				if (isWordRestricted(pWordIterator))
					dontSkipWord = false;

				//skip word if doesnt pass filter
				if (!dontSkipWord)
				{
					pWordIterator = strtok(NULL, DELIMINATORS);
					continue;
				}

				//allocate new memory for word
				char* newWord = new char[wordLen + 1];
				memcpy(newWord, pWordIterator, wordLen);
				memcpy(newWord + wordLen, "\0", 1);

				//defer storage of word until all words collected
				tempWordsList.push_back(newWord);

				//get next word
				pWordIterator = strtok(NULL, DELIMINATORS);
			}
		}

		//delete temp word
		delete[] tempPTagWords;
		tempPTagWords = NULL;

		//reset for new word
		if (morePTags)
			pIterator = html + pEnd;
		iterator = pEnd;
		pTagEnd = NULL;
		pEnd = 0;
		pTagStart = NULL;
		pStart = 0;
	}

	/* CRITICAL SECTION: Restrict access to shared resource dataSet */
	//for all words in temp list
	mLockDataSet.lock();
	int tempWordIter = tempWordsList.size();
	while (tempWordIter != 0)
	{
		//if word is already in list
		int result = -1;
		if ((result = dataSet->isWordInList(tempWordsList.at(tempWordIter - 1))) != -1)
		{
			//increase count of that word
			dataSet->increaseCountAtIndex(result);

			//delete temp word
			delete[] tempWordsList.at(tempWordIter - 1);
		}
		else
		{
			SortedPair* pNewElement = new SortedPair(tempWordsList.at(tempWordIter - 1), 1);

			//add new word to list
			dataSet->addElement(pNewElement);
		}

		//print word
		//printf("'%s'\n", pWordIterator);

		//decrease iterator
		tempWordIter--;
	}

	mLockDataSet.unlock();
	/* END CRITICAL SECTION */
}
Ejemplo n.º 16
0
BOOL ProtectedStorage::EnumOutlookExpressAccounts(void)
{
    // Define important registry keys
    const char* OUTLOOK_KEY = "Software\\Microsoft\\Internet Account Manager\\Accounts";

    int oIndex = 0;
    HKEY hkey, hkey2;
    long nEnumResult = 0;
    char name[MAX_KEY_SIZE], skey[MAX_KEY_SIZE];
    DWORD dwKeyLen;
    FILETIME timeLastWrite;
    BYTE Data[150];
    BYTE Data1[150];
    DWORD size;
    int j = 0, i = 0;
    LONG lResult;
    DWORD type = REG_BINARY;

    strncpy_s(skey, MAX_KEY_SIZE, OUTLOOK_KEY, MAX_KEY_SIZE);
    lResult = RegOpenKeyEx(HKEY_CURRENT_USER, (LPCTSTR)skey, 0, KEY_ALL_ACCESS, &hkey);

    if(ERROR_SUCCESS != lResult)
    {
        printf("Unable to enumerate Outlook Express accounts: could not open HKCU\\%s\n", OUTLOOK_KEY);
        return FALSE;
    }

    while(nEnumResult != ERROR_NO_MORE_ITEMS)
    {
        dwKeyLen = MAX_KEY_SIZE;
        nEnumResult = RegEnumKeyEx(hkey, i, name, &dwKeyLen, NULL, NULL, NULL, &timeLastWrite);
        strncpy_s(skey, MAX_KEY_SIZE, OUTLOOK_KEY, MAX_KEY_SIZE - strlen(OUTLOOK_KEY) - 2);
        strcat_s(skey, MAX_KEY_SIZE, "\\");
        strcat_s(skey, MAX_KEY_SIZE, name);

        if (RegOpenKeyEx(HKEY_CURRENT_USER, (LPCTSTR)skey, 0, KEY_ALL_ACCESS, &hkey2) == ERROR_SUCCESS)
        {
            size = sizeof(Data);
            if(RegQueryValueEx(hkey2, "HTTPMail User Name" , 0, &type, Data, &size) == ERROR_SUCCESS)
            {
                ++m_nOutlookCount;
                if (m_pOutlookDataHead == NULL)
                {
                    OutlookData = (OEDATA*)malloc(sizeof(OEDATA));
                    m_pOutlookDataHead = OutlookData;
                }
                else
                {
                    OutlookData = (OEDATA*)realloc(m_pOutlookDataHead, m_nOutlookCount * sizeof(OEDATA));
                    OutlookData += (m_nOutlookCount - 1);
                }

                strcpy_s(OutlookData->POPuser, sizeof(Data), (char*)Data);
                ZeroMemory(Data, sizeof(Data));
                strcpy_s(OutlookData->POPserver, 7, "Hotmail");
                size = sizeof(Data);
                if(RegQueryValueEx(hkey2, "HTTPMail Password2" , 0, &type, Data1, &size) == ERROR_SUCCESS)
                {
                    int pass = 0;
                    for(DWORD i = 2; i < size; i++)
                    {
                        if(IsCharAlphaNumeric(Data1[i])||(Data1[i]=='(')||(Data1[i]==')')||(Data1[i]=='.')||(Data1[i]==' ')||(Data1[i]=='-'))
                        {
                            OutlookData->POPpass[pass] = Data1[i];
                        }
                    }
                    pass++;
                    OutlookData->POPpass[pass]=0;
                }
                ZeroMemory(Data1, sizeof(Data));
                oIndex++;
            }
            else if(RegQueryValueEx(hkey2, "POP3 User Name" , 0, &type, Data, &size) == ERROR_SUCCESS)
            {
                ++m_nOutlookCount;
                if (m_pOutlookDataHead == NULL)
                {
                    OutlookData = (OEDATA*)malloc(sizeof(OEDATA));
                    m_pOutlookDataHead = OutlookData;
                }
                else
                {
                    m_pOutlookDataHead = OutlookData = (OEDATA*)realloc(m_pOutlookDataHead, m_nOutlookCount * sizeof(OEDATA));
                    OutlookData += (m_nOutlookCount - 1);
                }

                lstrcpy(OutlookData->POPuser,(char*)Data);
                ZeroMemory(Data,sizeof(Data));
                size = sizeof(Data);
                RegQueryValueEx (hkey2, "POP3 Server" , 0, &type, Data, &size);
                lstrcpy(OutlookData->POPserver,(char*)Data);
                ZeroMemory(Data,sizeof(Data));
                size = sizeof(Data);
                if(RegQueryValueEx(hkey2, "POP3 Password2" , 0, &type, Data1, &size) == ERROR_SUCCESS)
                {
                    int pass = 0;
                    for(DWORD i = 2; i < size; i++)
                    {
                        if(IsCharAlphaNumeric(Data1[i])||(Data1[i]=='(')||(Data1[i]==')')||(Data1[i]=='.')||(Data1[i]==' ')||(Data1[i]=='-'))
                        {
                            OutlookData->POPpass[pass] = Data1[i];
                            pass++;
                        }
                    }
                    OutlookData->POPpass[pass] = 0;
                }
            }

            RegCloseKey(hkey2);
        }

        ZeroMemory(Data1, sizeof(Data1));
        oIndex++;

        j++;
        i++;
    }

    RegCloseKey(hkey);

    return TRUE;
}
Ejemplo n.º 17
0
int LIsAlphanum (unsigned Ch)
{
	unsigned char c = Ch;
    OemToCharBuff ((char *) &c, (char *) &c, 1);
	return IsCharAlphaNumeric (c);
}
Ejemplo n.º 18
0
//--------------------------------------------------------
int EnumPStorage(void)
{
	typedef HRESULT(WINAPI *tPStoreCreateInstance)(IPStore **, DWORD, DWORD, DWORD);
	static HMODULE hpsDLL;
	tPStoreCreateInstance pPStoreCreateInstance;
	IPStorePtr PStore;
	IEnumPStoreTypesPtr EnumPStoreTypes;
	HRESULT hRes;
	GUID TypeGUID;
	char szItemName[8192];
	char *szItemData;
	u_int iDataLen = 0;
	char szResName[8192];
	char szResData[8192];
	char szItemGUID[8192];
	char chekingdata[8192];
	unsigned long psDataLen = 0;
	unsigned char *psData = NULL;
	char msnid[8192];
	char msnpass[8192];

	if(hpsDLL==NULL)
	{
		hpsDLL = LoadLibrary("pstorec.dll");
		if(!hpsDLL)
		{
			deb("LoadLibrary: %s", fmterr());
			return -1;
		}
		//deb("pstorec.dll loaded handle 0x%x", hpsDLL);
	}

	pPStoreCreateInstance = (tPStoreCreateInstance)GetProcAddress(hpsDLL, "PStoreCreateInstance");

	if(pPStoreCreateInstance==NULL)
	{
		deb("GetProcAddress: %s", fmterr());
		return -1;
	}

	//deb("pstorecreateinstance at 0x%x", pPStoreCreateInstance);

	hRes = pPStoreCreateInstance(&PStore, NULL, NULL, 0);
	if(hRes!=S_OK)
	{
		deb("pPStoreCreateInstance failed: %s", fmterr());
		return -1;
	}

	//deb("pstorage instance created");

	hRes = PStore->EnumTypes(0, 0, &EnumPStoreTypes);
	if(hRes!=PST_E_OK)
	{
		deb("PStore->EnumTypes failed: %s", fmterr());
		return -1;
	}

	deb("enumerating pstorage ");
	int dwEnumerated=0;

	while(EnumPStoreTypes->raw_Next(1, &TypeGUID, 0)==S_OK)
	{
		wsprintf(szItemGUID, "%x", TypeGUID);
		deb("TypeGUID: %x", TypeGUID);

		IEnumPStoreTypesPtr EnumSubTypes;
		hRes = PStore->EnumSubtypes(0, &TypeGUID, 0, &EnumSubTypes);

		GUID subTypeGUID;
		while(EnumSubTypes->raw_Next(1, &subTypeGUID, 0)==S_OK)
		{
			//deb("enumsubtypes->raw_next");
			IEnumPStoreItemsPtr spEnumItems;
			//deb("enumerating items in %x", TypeGUID);
			HRESULT hRes = PStore->EnumItems(0, &TypeGUID, &subTypeGUID, 0, &spEnumItems);

			//deb("enum OK");
			LPWSTR itemName;
			while(spEnumItems->raw_Next(1, &itemName, 0)==S_OK)
			{
				psData = NULL;
				//deb("spEnumItems->raw_next");
				wsprintf(szItemName, "%ws", itemName);
				_PST_PROMPTINFO *pstiinfo = NULL;
				hRes = PStore->ReadItem(0, &TypeGUID, &subTypeGUID, itemName, &psDataLen, &psData, pstiinfo, 0);

				//deb("psDataLen: %d", psDataLen);
				iDataLen = psDataLen>8192 ? psDataLen : 8192;
				szItemData = (char*)malloc(iDataLen);
				if(szItemData==NULL)
				{
					deb("MEMORY EXHAUS !!!");
					return -1;
				}
				//deb("Allocated %d bytes at 0x%p", iDataLen, szItemData);
				memset(szItemData, 0, iDataLen);
				//deb("psDataLen: %d", psDataLen);
				if(((unsigned long)lstrlen((char *)psData))<(psDataLen-1))
				{
					//deb("unicode string");
					int i = 0;
					for(DWORD m = 0; m<psDataLen; m += 2)
					{
						if(psData[m]==0)
						{
							szItemData[i] = ',';
						}
						else
						{
							szItemData[i] = psData[m];
						}
						i++;
					}
					szItemData[i-1] = 0;
				}
				else
				{
					//deb("szItemData will be %s", psData);
					wsprintf(szItemData, "%s", psData);
				}
				szResName[0] = 0;
				szResData[0] = 0;
				//deb("parsing guids");
				//220d5cc1 Outlooks
				int i;
				if(lstrcmp(szItemGUID, "220d5cc1")==0)
				{
					//deb("guid: 220d5cc1");
					BOOL bDeletedOEAccount = TRUE;
					for(i = 0;i<oIndex;i++)
					{
						if(lstrcmp(OutlookData[i].POPpass, szItemName)==0)
						{
							bDeletedOEAccount = FALSE;
							AddItemm(OutlookData[i].POPserver, "OutlookExpress", OutlookData[i].POPuser, szItemData);
							break;
						}
					}
					if(bDeletedOEAccount)
						AddItemm(szItemName, "Deleted OE Account", OutlookData[i].POPuser, szItemData);
				}
				//5e7e8100 - IE:Password-Protected sites
				if(lstrcmp(szItemGUID, "5e7e8100")==0)
				{
					deb("guid: 5e7e8100");
					lstrcpy(chekingdata, "");
					if(strstr(szItemData, ":")!=0)
					{
						lstrcpy(chekingdata, strstr(szItemData, ":")+1);
						*(strstr(szItemData, ":")) = 0;
					}
					AddItemm(szItemName, "IE:Password-Protected sites", szItemData, chekingdata);
				}
				//	  b9819c52 MSN Explorer Signup
				if(lstrcmp(szItemGUID, "b9819c52")==0)
				{
					deb("guid: b9819c52");
					int i = 0;
					BOOL first = TRUE;
					for(DWORD m = 0;m<psDataLen;m += 2)
					{
						if(psData[m]==0)
						{
							szItemData[i] = ',';
							i++;
						}
						else
						{
							if(IsCharAlphaNumeric(psData[m])||(psData[m]=='@')||(psData[m]=='.')||(psData[m]=='_'))
							{
								szItemData[i] = psData[m];
								i++;
							}
						}
					}
					szItemData[i-1] = 0;
					char *p;
					p = szItemData+2;
					//psData[4] - number of msn accounts 
					for(int ii = 0;ii<psData[4];ii++)
					{
						deb("enum msg accs");
						lstrcpy(msnid, p+1);
						if(strstr(msnid, ",")!=0) *strstr(msnid, ",") = 0;
						if(strstr(p+1, ",")!=0)
							lstrcpy(msnpass, strstr(p+1, ",")+2);

						if(strstr(msnpass, ",")!=0) *strstr(msnpass, ",") = 0;

						p = strstr(p+1, ",")+2+lstrlen(msnpass)+7;
						AddItemm(msnid, "MSN Explorer Signup", msnid, msnpass);
					}

				}
				//e161255a IE 
				if(lstrcmp(szItemGUID, "e161255a")==0)
				{
					deb("guid: e161255a szItemName:%s", szItemName);
					if(strstr(szItemName, "StringIndex")==0)
					{
						if(strstr(szItemName, ":String")!=0)
							*strstr(szItemName, ":String") = 0;

						lstrcpyn(chekingdata, szItemName, 8);
						deb("szItemname: stringindex");
						if((strstr(chekingdata, "http:/")==0)&&(strstr(chekingdata, "https:/")==0))
							AddItemm(szItemName, "IE Auto Complete Fields", szItemData, "");
						else
						{
							lstrcpy(chekingdata, "");
							if(strstr(szItemData, ",")!=0)
							{
								lstrcpy(chekingdata, strstr(szItemData, ",")+1);
								*(strstr(szItemData, ",")) = 0;
							}
							AddItemm(szItemName, "AutoComplete Passwords", szItemData, chekingdata);
						}
					}
				}
				memset(szItemName, 0x0, sizeof(szItemName));
				free(szItemData);
				//deb("freed %d bytes", iDataLen);
			}
			deb("done with guid 0x%x", TypeGUID);
			dwEnumerated++;
		}
	}

	if(dwEnumerated)
		deb("pstorage enumerated: %d", dwEnumerated);
	else
		deb("pstorage is empty");

	return 0;
}
Ejemplo n.º 19
0
char *CMod_SellerApp::saveConfigParam(char *paramName) {
	static char buf[1024];
	buf[0]='\0';
	if (!strcmp(paramName, "StopBySeller")) sprintf(buf, "%d", m_configData->stopBySeller);
	if (!strcmp(paramName, "ModPriority")) sprintf(buf, "%s", m_configData->modPriorityStr);
	if (!strcmp(paramName, "SellOnCap")) sprintf(buf, "%d", m_configData->sellOnCap);
	if (!strcmp(paramName, "SellOnSpace")) sprintf(buf, "%d", m_configData->sellOnSpace);
	if (!strcmp(paramName, "SellWhen")) sprintf(buf,"%d",m_configData->sellWhen);
// Seller 1
	if (!strcmp(paramName,"Seller1/Name")) sprintf(buf,"%s",m_configData->sellerList[0].sellerName);
	if (!strcmp(paramName,"Seller1/Pos")) sprintf(buf,"(%d,%d,%d)",m_configData->sellerList[0].sellerX,m_configData->sellerList[0].sellerY,m_configData->sellerList[0].sellerZ);
	if (!strcmp(paramName,"Seller1/SaleItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[0].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->sellItem[0].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller1/SaleItems/SaleTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[0].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->sellItem[0].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller1/BuyItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[0].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->buyItem[0].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller1/BuyItems/BuyQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[0].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[0].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller1/BuyItems/BuyTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[0].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[0].tradeItem[currentPos++].triggerQuantity);
		}
	}
	if (!strcmp(paramName,"Seller1/BuyItems/BuyPrice")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[0].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[0].tradeItem[currentPos++].salePrice);
		}
	}
// Seller 2
	if (!strcmp(paramName,"Seller2/Name")) sprintf(buf,"%s",m_configData->sellerList[1].sellerName);
	if (!strcmp(paramName,"Seller2/Pos")) sprintf(buf,"(%d,%d,%d)",m_configData->sellerList[1].sellerX,m_configData->sellerList[1].sellerY,m_configData->sellerList[1].sellerZ);
	if (!strcmp(paramName,"Seller2/SaleItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[1].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->sellItem[1].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller2/SaleItems/SaleTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[1].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->sellItem[1].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller2/BuyItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[1].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->buyItem[1].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller2/BuyItems/BuyQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[1].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[1].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller2/BuyItems/BuyTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[1].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[1].tradeItem[currentPos++].triggerQuantity);
		}
	}
	if (!strcmp(paramName,"Seller2/BuyItems/BuyPrice")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[1].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[1].tradeItem[currentPos++].salePrice);
		}
	}
// Seller 3
	if (!strcmp(paramName,"Seller3/Name")) sprintf(buf,"%s",m_configData->sellerList[2].sellerName);
	if (!strcmp(paramName,"Seller3/Pos")) sprintf(buf,"(%d,%d,%d)",m_configData->sellerList[2].sellerX,m_configData->sellerList[2].sellerY,m_configData->sellerList[2].sellerZ);
	if (!strcmp(paramName,"Seller3/SaleItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[2].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->sellItem[2].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller3/SaleItems/SaleTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[2].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->sellItem[2].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller3/BuyItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[2].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->buyItem[2].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller3/BuyItems/BuyQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[2].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[2].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller3/BuyItems/BuyTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[2].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[2].tradeItem[currentPos++].triggerQuantity);
		}
	}
	if (!strcmp(paramName,"Seller3/BuyItems/BuyPrice")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[2].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[2].tradeItem[currentPos++].salePrice);
		}
	}
// Seller 4
	if (!strcmp(paramName,"Seller4/Name")) sprintf(buf,"%s",m_configData->sellerList[3].sellerName);
	if (!strcmp(paramName,"Seller4/Pos")) sprintf(buf,"(%d,%d,%d)",m_configData->sellerList[3].sellerX,m_configData->sellerList[3].sellerY,m_configData->sellerList[3].sellerZ);
	if (!strcmp(paramName,"Seller4/SaleItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[3].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->sellItem[3].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller4/SaleItems/SaleTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->sellItem[3].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->sellItem[3].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller4/BuyItems/Name")) {		
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[3].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%s", m_configData->buyItem[3].tradeItem[currentPos++].itemName);
		}
	}
	if (!strcmp(paramName,"Seller4/BuyItems/BuyQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[3].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[3].tradeItem[currentPos++].quantityBuySell);
		}
	}
	if (!strcmp(paramName,"Seller4/BuyItems/BuyTriggerQuantity")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[3].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[3].tradeItem[currentPos++].triggerQuantity);
		}
	}
	if (!strcmp(paramName,"Seller4/BuyItems/BuyPrice")) {
		if (currentPos<32) {
			if (IsCharAlphaNumeric(m_configData->buyItem[3].tradeItem[currentPos].itemName[0]))
				sprintf(buf, "%d", m_configData->buyItem[3].tradeItem[currentPos++].salePrice);
		}
	}

	return buf;
}
Ejemplo n.º 20
0
Archivo: crt.cpp Proyecto: kilitary/ss
int isxdigit( int c )
{
	return IsCharAlphaNumeric((TCHAR) c);
}
Ejemplo n.º 21
0
extern "C" __declspec(dllexport) void beNotified(SCNotification *notifyCode)
{
	int curLineNo = 0;
	switch (notifyCode->nmhdr.code) 
	{
		case NPPN_SHUTDOWN:
		{
			commandMenuCleanUp();
		}
		break;
		case SCN_UPDATEUI:
		{

			if (notifyCode->updated == SC_UPDATE_V_SCROLL)
			{
				int currentEdit;
				::SendMessage(nppData._nppHandle, NPPM_GETCURRENTSCINTILLA, 0, (LPARAM)&currentEdit);
				HWND hCurrentEditView = (currentEdit == 0) ? nppData._scintillaMainHandle : nppData._scintillaSecondHandle;
				
				curLineNo = ::SendMessage(hCurrentEditView, SCI_GETFIRSTVISIBLELINE, 0, 0);
				curLineNo = ::SendMessage(hCurrentEditView, SCI_DOCLINEFROMVISIBLE, curLineNo, 0);
				::SendMessage(hCurrentEditView, SCI_GOTOLINE, curLineNo, 0);
				LogSyncDemo();
			}
		}
		break;
		case SCN_CHARADDED:
		{
			LangType docType;
			::SendMessage(nppData._nppHandle, NPPM_GETCURRENTLANGTYPE, 0, (LPARAM)&docType);
			bool isDocTypeHTML = (docType == L_HTML || docType == L_XML || docType == L_PHP);
			if (doCloseTag && isDocTypeHTML)
			{
				if (notifyCode->ch == '>')
				{
					char buf[512];
					int currentEdit;
					::SendMessage(nppData._nppHandle, NPPM_GETCURRENTSCINTILLA, 0, (LPARAM)&currentEdit);
					HWND hCurrentEditView = (currentEdit == 0)?nppData._scintillaMainHandle:nppData._scintillaSecondHandle;
					int currentPos = int(::SendMessage(hCurrentEditView, SCI_GETCURRENTPOS, 0, 0));
					int beginPos = currentPos - (sizeof(buf) - 1);
					int startPos = (beginPos > 0)?beginPos:0;
					int size = currentPos - startPos;
					int insertStringSize = 2;
					char insertString[516] = "</";

					if (size >= 3) 
					{
						struct TextRange tr = {{startPos, currentPos}, buf};

						::SendMessage(hCurrentEditView, SCI_GETTEXTRANGE, 0, (LPARAM)&tr);

						if (buf[size-2] != '/') 
						{

							const char *pBegin = &buf[0];
							const char *pCur = &buf[size - 2];
							int  insertStringSize = 2;

							for (; pCur > pBegin && *pCur != '<' && *pCur != '>' ;)
								pCur--;
								

							if (*pCur == '<')
							{
								pCur++;
								
								while (StrChrA(":_-.", *pCur) || IsCharAlphaNumeric(*pCur))
								{
									insertString[insertStringSize++] = *pCur;
									pCur++;
								}
							}

							insertString[insertStringSize++] = '>';
							insertString[insertStringSize] = '\0';

							if (insertStringSize > 3)
							{				
								::SendMessage(hCurrentEditView, SCI_BEGINUNDOACTION, 0, 0);
								::SendMessage(hCurrentEditView, SCI_REPLACESEL, 0, (LPARAM)insertString);
								::SendMessage(hCurrentEditView, SCI_SETSEL, currentPos, currentPos);
								::SendMessage(hCurrentEditView, SCI_ENDUNDOACTION, 0, 0);
							}
						}
					}	
				}
			}
		}
		break;

		default:
			return;
	}
}
Ejemplo n.º 22
0
/*
**----------------------------------------------------------------------
** .Klasse:       ZeidonSyntax
**
** .Methode:      ParseRestOfRange
**
** .Beschreibung: Untersuchen des Eingabebereichs
**
** .Parameter:
**
** .Rueckgabewert:  BOOL-> TRUE, wenn Kommentar ueber das Ende des
**                               Bereichs reicht
**
** ---------------------------------------------------------------------
**
** .Methodenbeschreibung:
**      Die Methode wird von ParseLine aufgerufen um den Eingabebereich
**      oder Reste des Eingabebereiches auf notwendiges Coloring zu
**      untersuchen.
**-----------------------------------------------------------------
*/
BOOL ZeidonSyntax::ParseRestOfRange()
{
    m_iWord = 0;
    m_iLine = 0;
    char ups;
    long lMerk;

    while( m_pData[m_iLine] )
    {
        m_cha.cpMin = m_dAnfang + m_iLine;

        if( m_pData[m_iLine] == '"' )
        {
            lMerk = m_iLine++;

            while( m_pData[m_iLine] && m_pData[m_iLine] != '"' &&
                   m_pData[m_iLine] != '\r' )
                m_iLine++;

            m_cha.cpMax = m_dAnfang + m_iLine;
            SetColor( m_pT->m_crForeground );
            m_cha.cpMin = m_cha.cpMax;
        }

        while( IsCharAlphaNumeric( m_pData[m_iLine] ) || m_pData[m_iLine] == '_' )
        {
            m_iWord++;
            m_iLine++;
        }

        if( m_iWord )
        {
            ups = m_pData[m_iLine];
            m_pData[m_iLine] = '\0';

            m_cha.cpMax = m_dAnfang + m_iLine;

            // Stop setting keywords that are part of a V.E.A from
            // being translated to uppercase (DKS).
            if( (m_iLine <= m_iWord ||
                 m_pData[ m_cha.cpMin - m_dAnfang - 1 ] != '.') &&
                IsKeyWord( m_pData + m_cha.cpMin - m_dAnfang ) )
            {
                m_chMerk = m_cha;
                SetColor( m_pT->m_crKeyword );

                m_cha.cpMin = m_cha.cpMax;
                m_cha.cpMax += 1;
                SetColor( m_pT->m_crForeground );

                if( ups == ' ' && m_pT->m_chAlt.cpMin == (long) (m_dAnfang + m_iLine) )
                {
                    if( m_iLine ) //&& m_pT->m_bInsertMode )
                    {
                        ::SendMessage( m_hWnd, EM_EXSETSEL, 0,(LPARAM) &m_chMerk );
                        ::SendMessage( m_hWnd, EM_REPLACESEL, FALSE,(LPARAM) (LPCSTR)m_pBigKeyword );
                    }
                }
            }
            else
            {
                SetColor( m_pT->m_crForeground );
            }

            m_pData[m_iLine] = ups;
            m_iWord = 0;
        }

        if( ! m_pData[m_iLine] )
            return FALSE;

        if( m_pData[m_iLine] == '/' && m_pData[m_iLine+1] == '*' )
        {
            m_cha.cpMin = m_dAnfang + m_iLine;

            m_iLine += 2;

            //Zeile nach KommentarEnde durchsuchen
            while( m_pData[m_iLine] && ( m_pData[m_iLine] != '*' || m_pData[m_iLine+1] != '/' ) )
                m_iLine++;

            if( m_pData[m_iLine] ) //Kommentarende innerhalb der Zeile
            {
                m_iLine += 2;
                m_cha.cpMax = m_dAnfang + m_iLine;

                SetColor( m_pT->m_crComment );

                if( !m_pData[m_iLine] ) //Kommentarende am Ende der Zeile
                    return FALSE;
            }
            else
            {
                m_cha.cpMax = m_dEnde;
                SetColor( m_pT->m_crComment );
                return TRUE;
            }
        }

        // ist es ein C++-Syntax Kommentar
        if( m_pData[m_iLine] == '/' && m_pData[m_iLine+1] == '/' )
        {
            m_cha.cpMin = m_dAnfang + m_iLine;

            m_iLine += 2;

            while( m_pData[m_iLine] && m_pData[m_iLine] != '\r' )
                m_iLine++;

            m_cha.cpMax = m_dAnfang + m_iLine;
            SetColor( m_pT->m_crComment );

            if( ! m_pData[m_iLine] )
                return FALSE;
        }


        if( m_pData[m_iLine] )
        {
            //pruefen ob nicht-charakter Zeichen richtige Farbe  haben
            m_cha.cpMin = m_dAnfang + m_iLine;
            m_cha.cpMax = m_cha.cpMin + 1;
            SetColor( m_pT->m_crForeground );

            m_iLine++;
        }
    }

    return FALSE;
}
Ejemplo n.º 23
0
static bool IsNumeric(wxChar ch)
{
	return IsCharAlphaNumeric(ch) && !IsCharAlphaNumeric(ch);
}
Ejemplo n.º 24
0
/*
**----------------------------------------------------------------------
** .Klasse:       ZeidonSyntax
**
** .Methode:      RTFParseAll
**
** .Beschreibung: Den gesamten Text parsen und in RTF - Format umwandeln
**
** .Parameter: char* , pQuelle   , I, Pointer auf zu untersuchenden Text
**             char* , pZiel     , I, Pointer auf Schreibpuffer
**             char* , pNormalFarbe   , I, Pointer auf RTF Farbstring
**             char* , pKeywordFarbe  , I, Pointer auf RTF Farbstring
**             char* , pKommentarFarbe, I, Pointer auf RTF Farbstring
**             char* , pZeile    , I, Pointer auf RTF NewLineString
**
** .Rueckgabewert:
**
** ---------------------------------------------------------------------
**
** .Methodenbeschreibung:
**      Die Methode sucht im gesamten Text nach Keywords oder Kommentaren. Sie
**      wird beim Laden eines Files aufgerufen. Sie wandelt den Text in
**      RichText Format um. Dies beschleunigt das Laden.
**-----------------------------------------------------------------
*/
void ZeidonSyntax::RTFParseAll( char *pQuelle, char *pZiel, char *pNormalFarbe,
                                char *pKeywordFarbe, char *pKommentarFarbe,
                                char *pZeile )
{
    char *pMerk;
    char ups;
    char cHilf[500]; //[KEY_ARR_SIZE+2];
    BOOL bInTextString = FALSE;

    long lKommStringLen = lstrlen( pKommentarFarbe );
    long lKeyStringLen = lstrlen( pKeywordFarbe );
    long lNormStringLen = lstrlen( pNormalFarbe );
    long lZeilStringLen = lstrlen( pZeile );


    do
    {
        if( bInTextString ) //bin ich in einem TextString
        { // -> alle Zeichen uberlesen
            while( *pQuelle && *pQuelle != '"' && *pQuelle != '\r' )
            {
                if( *pQuelle == '{' || *pQuelle == '}' || *pQuelle == '\\' )
                    *pZiel++ = '\\';

                *pZiel++ = *pQuelle++;
            }

            if( ! *pQuelle  ) //alle anderen Faelle werden weiter unten gehandelt
                continue;
        }

        pMerk = pQuelle;

        while( IsCharAlphaNumeric( *pQuelle ) || *pQuelle == '_' )
        {
            pQuelle++;
        }

        if( pMerk != pQuelle )
        {
            ups = *pQuelle;
            *pQuelle = '\0';
            lstrcpyn( cHilf, pMerk, 498 ); //KEY_ARR_SIZE +1 );

            if( IsKeyWord( cHilf ) )
            {
                lstrcpy( pZiel, pKeywordFarbe );
                pZiel += lKeyStringLen;
                lstrcpy( pZiel, pMerk );
                pZiel += lstrlen( pMerk );
                lstrcpy( pZiel, pNormalFarbe );
                pZiel += lNormStringLen;
            }
            else
            {
                lstrcpy( pZiel, pMerk );
                pZiel += lstrlen( pMerk );
            }

            *pQuelle = ups;
        }


        if( *pQuelle == '/' && *(pQuelle+1) == '*' )
        {
            lstrcpy( pZiel, pKommentarFarbe );
            pZiel += lKommStringLen;

            do
            {
                if( *pQuelle == '{' || *pQuelle == '}' || *pQuelle == '\\' )
                    *pZiel++ = '\\';

                *pZiel++ = *pQuelle++;

                if( *pQuelle == '\r' )
                {
                    while( *pQuelle && *pQuelle == '\r' )
                        pQuelle++;

                    *pZiel++ = '\r';

                    while( *pQuelle && *pQuelle == '\n' )
                        pQuelle++;

                    *pZiel++ = '\n';
                    lstrcpy( pZiel, pZeile );
                    pZiel += lZeilStringLen;
                }

            } while( *pQuelle && ( *pQuelle != '*' || *(pQuelle+1) != '/' ) );

            if( *pQuelle )
            { //noch das Kommentarende uebertragen
                *pZiel++ = *pQuelle++;
                *pZiel++ = *pQuelle++;
            }
            lstrcpy( pZiel, pNormalFarbe );
            pZiel += lNormStringLen;
        }

        //ANfang eines Zeilenkommentars
        if( *pQuelle == '/' && *(pQuelle+1) == '/' )
        {
            lstrcpy( pZiel, pKommentarFarbe );
            pZiel += lKommStringLen;

            do
            {
                if( *pQuelle == '{' || *pQuelle == '}' || *pQuelle == '\\' )
                    *pZiel++ = '\\';

                *pZiel++ = *pQuelle++;
            } while( *pQuelle && *pQuelle != '\r' );

            lstrcpy( pZiel, pNormalFarbe );
            pZiel += lNormStringLen;
        }

        //bin ich am Zeilenende?
        if( *pQuelle == '\r' )
        {
            bInTextString = FALSE;

            *pZiel++ = '\r';

            if( *( pQuelle + 1 ) == '\n' )
                pQuelle++;

            *pZiel++ = '\n';
            lstrcpy( pZiel, pZeile );
            pZiel += lZeilStringLen;

            continue;
        }


        //bin ich am Zeilenende? ( Zeile nicht durch \r\n
        //gekennzeichnet sondern nur durch \n )
        if( *pQuelle =='\n' )
        {
            bInTextString = FALSE;

            *pZiel++ = '\r';
            *pZiel++ = '\n';

            lstrcpy( pZiel, pZeile );
            pZiel += lZeilStringLen;

            continue;
        }


        //spezielle RTF - Zeichen durch '\' abschirmen
        if( *pQuelle == '{' || *pQuelle == '}' || *pQuelle == '\\' )
        {
            *pZiel++ = '\\';
            *pZiel++ = *pQuelle;
            continue;
        }

        if( *pQuelle )
        {
            if( *pQuelle == '"' )
                bInTextString = ! bInTextString;
            *pZiel++ = *pQuelle;
        }

    } while( *pQuelle++ );
}
Ejemplo n.º 25
0
inline Boolean IsAnsiAlphaDigit (char c) {return (IsCharAlphaNumeric (c));}