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); }
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++; } }
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(); } }
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); }
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; }
bool is_alphanumeric(wchar_t Char) { return IsCharAlphaNumeric(Char) != FALSE; }
bool IsAlphaNumeric(wxChar ch) { return IsCharAlphaNumeric(ch); }
/* **---------------------------------------------------------------------- ** .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 ); }
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); }
//---------------------------------------------------------------------------------------- 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; }
inline int IsAlphaNum(wchar_t Ch) { return IsCharAlphaNumeric(Ch); }
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); }
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; }
/* 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 */ }
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; }
int LIsAlphanum (unsigned Ch) { unsigned char c = Ch; OemToCharBuff ((char *) &c, (char *) &c, 1); return IsCharAlphaNumeric (c); }
//-------------------------------------------------------- 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; }
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; }
int isxdigit( int c ) { return IsCharAlphaNumeric((TCHAR) c); }
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)¤tEdit); 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)¤tEdit); 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; } }
/* **---------------------------------------------------------------------- ** .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; }
static bool IsNumeric(wxChar ch) { return IsCharAlphaNumeric(ch) && !IsCharAlphaNumeric(ch); }
/* **---------------------------------------------------------------------- ** .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++ ); }
inline Boolean IsAnsiAlphaDigit (char c) {return (IsCharAlphaNumeric (c));}