int StringChunk_Add(StringChunk *dl, const char *Str, const char *AdditionalData, int LengthOfAdditionalData /* The length will not be stored. */ ) { EntryForString NewEntry; if( AdditionalData != NULL && LengthOfAdditionalData > 0 ) { _32BIT_INT OffsetOfStoredTo; char *DataStoredTo = ExtendableBuffer_Expand(&(dl -> AdditionalDataChunk), LengthOfAdditionalData, &OffsetOfStoredTo ); if( DataStoredTo == NULL ) { return -1; } NewEntry.OffsetOfData = OffsetOfStoredTo; memcpy(DataStoredTo, AdditionalData, LengthOfAdditionalData); } else { NewEntry.OffsetOfData = -1; } if( ContainWildCard(Str) ) { NewEntry.OffsetOfString = StringList_Add(&(dl -> List_W), Str, ','); if( NewEntry.OffsetOfString >= 0 ) { Array_PushBack(&(dl -> List_W_Pos), &NewEntry, NULL); } else { return -1; } } else { NewEntry.OffsetOfString = StringList_Add(&(dl -> List), Str, ','); if( NewEntry.OffsetOfString >= 0 ) { HashTable_Add(&(dl -> List_Pos), Str, 0, &NewEntry, NULL); } else { return -2; } } return 0; }
int GetHostsByRaw(const char *RawPackage, StringList *out) { int AnswerCount = DNSGetAnswerCount(RawPackage); int loop; const char *AnswerRecordPosition; const char *DataPos; int IpAddressCount = 0; char Data[] = " "; for( loop = 1; loop <= AnswerCount; ++loop ) { AnswerRecordPosition = DNSGetAnswerRecordPosition(RawPackage, loop); if( DNSGetRecordType(AnswerRecordPosition) == DNS_TYPE_A ) { DataPos = DNSGetResourceDataPos(AnswerRecordPosition); DNSParseData(RawPackage, DataPos, 1, Data, sizeof(Data), DNS_RECORD_A, NUM_OF_DNS_RECORD_A, 1); StringList_Add(out, Data, ','); ++IpAddressCount; } } return IpAddressCount; }
void CxDlgTablePrimaryKey::OnOK() { CDialog::OnOK(); ASSERT (m_pKeyParam); if (!m_pKeyParam) return; if (!m_bAlter) { m_strKeyName.TrimLeft(); m_strKeyName.TrimRight(); lstrcpy (m_pKeyParam->tchszPKeyName, m_strKeyName); } // // Get the list of column of primary key: if (!m_bAlter) { m_pKeyParam->pListKey = StringList_Done (m_pKeyParam->pListKey); CString strItem; int i, nCount = m_cListKey.GetCount(); for (i=0; i<nCount; i++) { m_cListKey.GetText (i, strItem); m_pKeyParam->pListKey = StringList_Add (m_pKeyParam->pListKey, strItem); } } if (m_bAlter) m_pKeyParam->nMode = m_nDelMode; }
void CxDlgObjectComment::OnOK() { CString csTempo,csNameCol,csSyntaxObject,csVNodeName,csSQLSyntax; LPCOMMENTCOLUMN lpCommentCol; LPSTRINGLIST lpStrList = NULL; BOOL bGenerate; int i,iret,nCount = m_cListCtrl.GetItemCount(); csVNodeName = (LPTSTR)GetVirtNodeName(m_nNodeHandle); csSyntaxObject.Empty(); m_cListCtrl.HideProperty(TRUE); m_cEditTableComment.GetWindowText(m_csCommentObject); if (!m_tcObjComment && !m_csCommentObject.IsEmpty()) // new comment on general object GenerateSyntaxComment4Object(csSyntaxObject); else if (m_tcObjComment && (x_strcmp(m_csCommentObject,m_tcObjComment)!=0) ) // comment exist GenerateSyntaxComment4Object(csSyntaxObject); for (i=0; i<nCount; i++) { csSQLSyntax.Empty(); bGenerate = FALSE; csNameCol = m_cListCtrl.GetItemText (i,0); csTempo = m_cListCtrl.GetItemText (i,1); lpCommentCol = FindCurrentColumn(csNameCol); ASSERT(lpCommentCol != NULL); if (lpCommentCol->lpszComment) { if (x_strcmp(lpCommentCol->lpszComment,(LPTSTR)(LPCTSTR)csTempo)!=0) bGenerate = TRUE; } else { if (!csTempo.IsEmpty()) bGenerate = TRUE; } if (bGenerate) { csSQLSyntax.Format("comment on column %s.%s.%s is '%s'", QuoteIfNeeded((LPTSTR)(LPCTSTR)m_csObjectOwner), QuoteIfNeeded((LPTSTR)(LPCTSTR)m_csObjectName), QuoteIfNeeded((LPTSTR)lpCommentCol->szColumnName), (LPCTSTR)csTempo); lpStrList = StringList_Add (lpStrList, (LPTSTR)(LPCTSTR)csSQLSyntax); } } // execute the SQL statements iret = VDBA20xGenCommentObject ( (LPSTR)(LPCTSTR)csVNodeName,(LPSTR)(LPCTSTR)m_csDBName, (LPSTR)(LPCTSTR)csSyntaxObject, lpStrList); if (lpStrList) lpStrList = StringList_Done (lpStrList); if (iret != RES_SUCCESS) { ErrorMessage ((UINT) IDS_E_COMMENT_ON_FAILED, RES_ERR); return; } CDialog::OnOK(); }