int FuzzyStrCmp(const wxString& a, const wxString& b) { size_t aCookie = 0, bCookie = 0; wxString aField, bField; do { aField = GetNextField(a, aCookie); bField = GetNextField(b, bCookie); if (aField.IsNumber() && bField.IsNumber()) { unsigned long aInteger = StrToULong(aField); unsigned long bInteger = StrToULong(bField); if (aInteger < bInteger) { return -1; } else if (aInteger > bInteger) { return 1; } } else if (aField < bField) { return -1; } else if (aField > bField) { return 1; } } while (!aField.IsEmpty() && !bField.IsEmpty()); return 0; }
void CServerWnd::OnBnClickedAddserver(wxCommandEvent& WXUNUSED(evt)) { wxString servername = CastChild( IDC_SERVERNAME, wxTextCtrl )->GetValue(); wxString serveraddr = CastChild( IDC_IPADDRESS, wxTextCtrl )->GetValue(); long port = StrToULong( CastChild( IDC_SPORT, wxTextCtrl )->GetValue() ); if ( serveraddr.IsEmpty() ) { AddLogLineC(_("Server not added: No IP or hostname specified.")); return; } if ( port <= 0 || port > 65535 ) { AddLogLineC(_("Server not added: Invalid server-port specified.")); return; } CServer* toadd = new CServer( port, serveraddr ); toadd->SetListName( servername.IsEmpty() ? serveraddr : servername ); if ( theApp->AddServer( toadd, true ) ) { CastChild( IDC_SERVERNAME, wxTextCtrl )->Clear(); CastChild( IDC_IPADDRESS, wxTextCtrl )->Clear(); CastChild( IDC_SPORT, wxTextCtrl )->Clear(); } else { CServer* update = theApp->serverlist->GetServerByAddress(toadd->GetAddress(), toadd->GetPort()); // See note on CServerList::AddServer if (update == NULL && toadd->GetIP() != 0) { update = theApp->serverlist->GetServerByIPTCP(toadd->GetIP(), toadd->GetPort()); } if ( update ) { update->SetListName(toadd->GetListName()); serverlistctrl->RefreshServer(update); } delete toadd; } theApp->serverlist->SaveServerMet(); }
void CServerList::LoadStaticServers() { if ( !CPath::FileExists(m_staticServersConfig) ) { return; } wxFileInputStream stream(m_staticServersConfig); wxTextInputStream f(stream); while ( !stream.Eof() ) { wxString line = f.ReadLine(); // Skip comments if ( line.GetChar(0) == '#' || line.GetChar(0) == '/') { continue; } wxStringTokenizer tokens( line, wxT(",") ); if ( tokens.CountTokens() != 3 ) { continue; } // format is host:port,priority,Name wxString addy = tokens.GetNextToken().Strip( wxString::both ); wxString prio = tokens.GetNextToken().Strip( wxString::both ); wxString name = tokens.GetNextToken().Strip( wxString::both ); wxString host = addy.BeforeFirst( wxT(':') ); wxString port = addy.AfterFirst( wxT(':') ); int priority = StrToLong( prio ); if (priority < SRV_PR_MIN || priority > SRV_PR_MAX) { priority = SRV_PR_NORMAL; } // We need a valid name for the list if ( name.IsEmpty() ) { name = addy; } // create server object and add it to the list CServer* server = new CServer( StrToLong( port ), host ); server->SetListName( name ); server->SetIsStaticMember( true ); server->SetPreference( priority ); // Try to add the server to the list if ( !theApp->AddServer( server ) ) { delete server; CServer* existing = GetServerByAddress( host, StrToULong( port ) ); if ( existing) { existing->SetListName( name ); existing->SetIsStaticMember( true ); existing->SetPreference( priority ); Notify_ServerRefresh( existing ); } } } }
unsigned long TIniFile::ReadULong(const wxString &Section, const wxString &Ident, unsigned long Default) { return StrToULong(ReadString(Section, Ident, ULongToStr(Default))); }