Changeset 6430 for trunk/licq

Show
Ignore:
Timestamp:
07/06/08 20:30:57 (5 months ago)
Author:
flynd
Message:

Redefined UserStringList? to use std::string instead of char* so we don't have to keep track of freeing the strings when we're done.

Location:
trunk/licq
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/licq/include/licq_icqd.h

    r6421 r6430  
    6161    } 
    6262 
     63typedef std::list<std::string> StringList; 
     64 
    6365/* Forward declarations for friend functions */ 
    6466void *Ping_tep(void *p); 
     
    348350     bool bMultipleRecipients = false, CICQColor *pColor = NULL); 
    349351  // Contact List 
    350   unsigned long icqSendContactList(const char *szId, UserStringList &users, 
     352  unsigned long icqSendContactList(const char *szId, const StringList& users, 
    351353     bool bOnline, unsigned short nLevel, bool bMultipleRecipients = false, 
    352354     CICQColor *pColor = NULL); 
     
    467469  void icqRenameGroup(const char *_szNewName, unsigned short _nGSID); 
    468470  void icqRenameUser(const char *_szId); 
    469   void icqExportUsers(UserStringList &, unsigned short); 
     471  void icqExportUsers(const StringList& users, unsigned short); 
    470472  void icqExportGroups(const GroupNameMap& groups); 
    471473  void icqUpdateServerGroups(); 
  • trunk/licq/include/licq_packets.h

    r6405 r6430  
    99class CBuffer; 
    1010class INetSocket; 
     11 
     12typedef std::list<std::string> StringList; 
    1113 
    1214// values of extra info to identify plugin request 
     
    375377public: 
    376378   CPU_GenericUinList(const char *szId, unsigned short Family, unsigned short Subtype); 
    377    CPU_GenericUinList(UserStringList &, unsigned short, unsigned short); 
     379   CPU_GenericUinList(const StringList& users, unsigned short, unsigned short); 
    378380   CPU_GenericUinList(unsigned long _nUin, unsigned short Family, unsigned short Subtype); 
    379381}; 
     
    401403{ 
    402404public: 
    403   CPU_ExportToServerList(UserStringList &, unsigned short); 
     405  CPU_ExportToServerList(const StringList& users, unsigned short); 
    404406}; 
    405407 
     
    453455{ 
    454456public: 
    455   CPU_ClearServerList(UserStringList &, unsigned short); 
     457  CPU_ClearServerList(const StringList& users, unsigned short); 
    456458}; 
    457459 
  • trunk/licq/include/licq_user.h

    r6420 r6430  
    241241typedef std::map<unsigned short, std::string> GroupNameMap; 
    242242typedef std::list<unsigned long> UinList; 
    243 typedef std::list<char *> UserStringList; 
    244243typedef std::vector <class CUserEvent *> UserEventList; 
    245244 
  • trunk/licq/src/icqd-srv.cpp

    r6405 r6430  
    133133 
    134134  // Just upload all of the users now 
    135   UserStringList doneUsers; 
    136   UserStringList users; 
     135  StringList doneUsers; 
     136  StringList users; 
    137137  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_R) 
    138138  { 
     
    141141    if (pUser->GetSID() == 0 && !pUser->IgnoreList()) 
    142142    { 
    143       UserStringList::const_iterator p = std::find(doneUsers.begin(), doneUsers.end(), 
     143      StringList::const_iterator p = std::find(doneUsers.begin(), doneUsers.end(), 
    144144        pUser->IdString()); 
    145145 
     
    147147      { 
    148148        // Keep track of who has been done 
    149         users.push_back(strdup(pUser->IdString())); 
    150         doneUsers.push_back(strdup(pUser->IdString())); 
     149        users.push_back(pUser->IdString()); 
     150        doneUsers.push_back(pUser->IdString()); 
    151151      } 
    152152    } 
     
    159159    icqUpdateServerGroups(); 
    160160  } 
    161    
    162   UserStringList::iterator it; 
    163   for (it = doneUsers.begin(); it != doneUsers.end(); ++it) 
    164     free(*it); 
    165161 
    166162  // Export visible/invisible/ignore list 
    167   UserStringList visibleUsers, invisibleUsers, ignoredUsers; 
     163  StringList visibleUsers, invisibleUsers, ignoredUsers; 
    168164  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_R) 
    169165  { 
    170166    if (pUser->IgnoreList() && pUser->GetSID() == 0) 
    171167    { 
    172       ignoredUsers.push_back(strdup(pUser->IdString())); 
     168      ignoredUsers.push_back(pUser->IdString()); 
    173169    } 
    174170    else 
     
    176172      if (pUser->InvisibleList() && pUser->GetInvisibleSID() == 0) 
    177173      { 
    178         invisibleUsers.push_back(strdup(pUser->IdString())); 
     174        invisibleUsers.push_back(pUser->IdString()); 
    179175      } 
    180176 
    181177      if (pUser->VisibleList() && pUser->GetVisibleSID() == 0) 
    182178      { 
    183         visibleUsers.push_back(strdup(pUser->IdString())); 
     179        visibleUsers.push_back(pUser->IdString()); 
    184180      } 
    185181    } 
     
    198194 
    199195//-----icqExportUsers---------------------------------------------------------- 
    200 void CICQDaemon::icqExportUsers(UserStringList &users, unsigned short _nType) 
     196void CICQDaemon::icqExportUsers(const StringList& users, unsigned short _nType) 
    201197{ 
    202198  if (!UseServerContactList())  return; 
     
    12261222{ 
    12271223  unsigned short n = 0; 
    1228   UserStringList users; 
     1224  StringList users; 
    12291225  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_W) 
    12301226  { 
    12311227    n++; 
    1232     users.push_back(strdup(pUser->IdString())); 
     1228    users.push_back(pUser->IdString()); 
    12331229    if (n == m_nMaxUsersPerPacket) 
    12341230    { 
     
    12361232      gLog.Info(tr("%sUpdating contact list (#%hu)...\n"), L_SRVxSTR, p->Sequence()); 
    12371233      SendEvent_Server(p); 
    1238       users.erase(users.begin(), users.end()); 
     1234      users.clear(); 
    12391235      n = 0; 
    12401236    } 
     
    12731269  // Go through the entire list of users, checking if each one is on 
    12741270  // the visible list 
    1275   UserStringList users; 
     1271  StringList users; 
    12761272  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_R) 
    12771273  { 
    12781274    if (pUser->GetInGroup(GROUPS_SYSTEM, GROUP_VISIBLE_LIST) ) 
    1279       users.push_back(strdup(pUser->IdString())); 
     1275      users.push_back(pUser->IdString()); 
    12801276  } 
    12811277  FOR_EACH_PROTO_USER_END 
     
    12891285void CICQDaemon::icqSendInvisibleList() 
    12901286{ 
    1291   UserStringList users; 
     1287  StringList users; 
    12921288  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_R) 
    12931289  { 
    12941290    if (pUser->GetInGroup(GROUPS_SYSTEM, GROUP_INVISIBLE_LIST) ) 
    1295       users.push_back(strdup(pUser->IdString())); 
     1291      users.push_back(pUser->IdString()); 
    12961292  } 
    12971293  FOR_EACH_PROTO_USER_END 
     
    15831579{ 
    15841580  if (!UseServerContactList()) return; 
    1585    
     1581 
    15861582  unsigned short n = 0; 
    1587   UserStringList users; 
    1588    
     1583  StringList users; 
     1584 
    15891585  // Delete all the users in groups 
    15901586  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_W) 
    15911587  { 
    15921588    n++; 
    1593     users.push_back(strdup(pUser->IdString())); 
     1589    users.push_back(pUser->IdString()); 
    15941590    if (n == m_nMaxUsersPerPacket) 
    15951591    { 
     
    15981594      gLog.Info(tr("%sDeleting server list users (#%hu)...\n"), L_SRVxSTR, p->Sequence()); 
    15991595      SendEvent_Server(p); 
    1600       users.erase(users.begin(), users.end()); 
     1596      users.clear(); 
    16011597      n = 0; 
    16021598    } 
    16031599  } 
    16041600  FOR_EACH_PROTO_USER_END 
    1605    
     1601 
    16061602  if (n != 0) 
    16071603  { 
     
    16101606    SendEvent_Server(p); 
    16111607  } 
    1612    
     1608 
    16131609  // Delete all the groups 
    16141610 
    1615    
     1611 
    16161612  // Delete invisible users 
    16171613  n = 0; 
    1618   users.erase(users.begin(), users.end()); 
    1619      
     1614  users.clear(); 
     1615 
    16201616  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_W) 
    16211617  { 
     
    16231619    { 
    16241620      n++; 
    1625       users.push_back(strdup(pUser->IdString())); 
    1626     } 
    1627      
     1621      users.push_back(pUser->IdString()); 
     1622    } 
     1623 
    16281624    if (n == m_nMaxUsersPerPacket) 
    16291625    { 
     
    16331629        L_SRVxSTR, p->Sequence()); 
    16341630      SendEvent_Server(p); 
    1635       users.erase(users.begin(), users.end()); 
     1631      users.clear(); 
    16361632      n = 0; 
     1633      continue; 
    16371634    } 
    16381635  } 
    16391636  FOR_EACH_PROTO_USER_END 
    1640    
     1637 
    16411638  if (n != 0) 
    16421639  { 
     
    16461643    SendEvent_Server(p); 
    16471644  } 
    1648    
     1645 
    16491646  // Delete visible users 
    16501647  n = 0; 
    1651   users.erase(users.begin(), users.end()); 
    1652    
     1648  users.clear(); 
     1649 
    16531650  FOR_EACH_PROTO_USER_START(LICQ_PPID, LOCK_W) 
    16541651  { 
     
    16561653    { 
    16571654      n++; 
    1658       users.push_back(strdup(pUser->IdString())); 
    1659     } 
    1660      
     1655      users.push_back(pUser->IdString()); 
     1656    } 
     1657 
    16611658    if (n == m_nMaxUsersPerPacket) 
    16621659    { 
     
    16661663        L_SRVxSTR, p->Sequence()); 
    16671664      SendEvent_Server(p); 
    1668       users.erase(users.begin(), users.end()); 
     1665      users.clear(); 
    16691666      n = 0; 
     1667      continue; 
    16701668    } 
    16711669  } 
    16721670  FOR_EACH_PROTO_USER_END 
    1673    
     1671 
    16741672  if (n != 0) 
    16751673  { 
     
    16781676      L_SRVxSTR, p->Sequence()); 
    16791677    SendEvent_Server(p); 
    1680   }   
    1681    
     1678  } 
    16821679} 
    16831680 
  • trunk/licq/src/icqd-tcp.cpp

    r6405 r6430  
    457457//-----CICQDaemon::sendContactList------------------------------------------- 
    458458unsigned long CICQDaemon::icqSendContactList(const char *szId, 
    459    UserStringList &users, bool online, unsigned short nLevel, 
     459   const StringList& users, bool online, unsigned short nLevel, 
    460460   bool bMultipleRecipients, CICQColor *pColor) 
    461461{ 
     
    467467 
    468468  ICQUser *u = NULL; 
    469   UserStringList::iterator iter; 
     469  StringList::const_iterator iter; 
    470470  for (iter = users.begin(); iter != users.end(); ++iter) 
    471471  { 
    472     u = gUserManager.FetchUser(*iter, LICQ_PPID, LOCK_R); 
    473     p += sprintf(&m[p], "%s%c%s%c", *iter, char(0xFE), 
     472    u = gUserManager.FetchUser(iter->c_str(), LICQ_PPID, LOCK_R); 
     473    p += sprintf(&m[p], "%s%c%s%c", iter->c_str(), char(0xFE), 
    474474       u == NULL ? "" : u->GetAlias(), char(0xFE)); 
    475     vc.push_back(new CContact(*iter, LICQ_PPID, u == NULL ? "" : u->GetAlias())); 
     475    vc.push_back(new CContact(iter->c_str(), LICQ_PPID, u == NULL ? "" : u->GetAlias())); 
    476476    gUserManager.DropUser(u); 
    477477  } 
     
    532532   CICQColor *pColor) 
    533533{ 
    534   UserStringList users; 
     534  StringList users; 
    535535  char szUin[24]; 
    536536 
  • trunk/licq/src/icqpacket.cpp

    r6405 r6430  
    13001300 
    13011301//-----GenericUinList----------------------------------------------------------- 
    1302 CPU_GenericUinList::CPU_GenericUinList(UserStringList &users, unsigned short family, unsigned short Subtype) 
     1302CPU_GenericUinList::CPU_GenericUinList(const StringList& users, unsigned short family, unsigned short Subtype) 
    13031303  : CPU_CommonFamily(family, Subtype) 
    13041304{ 
     
    13061306  len[1] = '\0'; 
    13071307  int nLen = 0; 
    1308   UserStringList::iterator it; 
     1308  StringList::const_iterator it; 
    13091309  for (it = users.begin(); it != users.end(); ++it) 
    1310     nLen += strlen(*it)+1; 
     1310    nLen += it->size() + 1; 
    13111311 
    13121312  char *contacts = new char[nLen+1]; 
     
    13141314 
    13151315  for (it = users.begin(); it != users.end(); ++it) { 
    1316     len[0] = strlen(*it); 
     1316    len[0] = it->size(); 
    13171317    strcat(contacts, len); 
    1318     strcat(contacts, *it); 
    1319     free (*it); 
     1318    strcat(contacts, it->c_str()); 
    13201319  } 
    13211320 
     
    27472746 
    27482747//-----ExportToServerList------------------------------------------------------- 
    2749 CPU_ExportToServerList::CPU_ExportToServerList(UserStringList &users, 
     2748CPU_ExportToServerList::CPU_ExportToServerList(const StringList& users, 
    27502749                                               unsigned short _nType) 
    27512750  : CPU_CommonFamily(ICQ_SNACxFAM_LIST, ICQ_SNACxLIST_ROSTxADD) 
     
    27552754  int nSize = 0; 
    27562755 
    2757   UserStringList::iterator i; 
     2756  StringList::const_iterator i; 
    27582757  for (i = users.begin(); i != users.end(); ++i) 
    27592758  { 
    2760     ICQUser *pUser = gUserManager.FetchUser(*i, LICQ_PPID, LOCK_R); 
     2759    ICQUser* pUser = gUserManager.FetchUser(i->c_str(), LICQ_PPID, LOCK_R); 
    27612760    if (pUser) 
    27622761    { 
    2763       nSize += strlen(*i); 
     2762      nSize += i->size(); 
    27642763      nSize += 10; 
    27652764 
     
    27862785 
    27872786    // Save the SID 
    2788     ICQUser *u = gUserManager.FetchUser(*i, LICQ_PPID, LOCK_W); 
     2787    ICQUser* u = gUserManager.FetchUser(i->c_str(), LICQ_PPID, LOCK_W); 
    27892788    switch (_nType) 
    27902789    { 
     
    28362835    SetExtraInfo(m_nGSID); 
    28372836 
    2838     nLen = strlen(*i); 
     2837    nLen = i->size(); 
    28392838    buffer->PackUnsignedShortBE(nLen); 
    2840     buffer->Pack(*i, nLen); 
     2839    buffer->Pack(i->c_str(), nLen); 
    28412840    buffer->PackUnsignedShortBE(m_nGSID); 
    28422841    buffer->PackUnsignedShortBE(m_nSID); 
     
    28552854    if (szUnicodeName) 
    28562855      free(szUnicodeName); 
    2857  
    2858     free(*i); 
    28592856  } 
    28602857} 
     
    31763173 
    31773174//-----ClearServerList------------------------------------------------------ 
    3178 CPU_ClearServerList::CPU_ClearServerList(UserStringList &uins, 
     3175CPU_ClearServerList::CPU_ClearServerList(const StringList& uins, 
    31793176                                         unsigned short _nType) 
    31803177  : CPU_CommonFamily(ICQ_SNACxFAM_LIST, ICQ_SNACxLIST_ROSTxREM) 
    31813178{ 
    31823179  int nSize = 0; 
    3183   UserStringList::iterator i; 
    3184      
     3180  StringList::const_iterator i; 
     3181 
    31853182  if (_nType == ICQ_ROSTxGROUP) 
    3186   { 
    3187  
    3188         
    31893183    return; 
    3190   } 
    3191    
    31923184 
    31933185  for (i = uins.begin(); i != uins.end(); ++i) 
    31943186  { 
    3195     ICQUser *pUser = gUserManager.FetchUser(*i, LICQ_PPID, LOCK_R); 
     3187    ICQUser* pUser = gUserManager.FetchUser(i->c_str(), LICQ_PPID, LOCK_R); 
    31963188    if (pUser) 
    31973189    { 
    3198       nSize += strlen(*i) + 2; 
     3190      nSize += i->size() + 2; 
    31993191      nSize += 8; 
    32003192      if (pUser->GetAwaitingAuth()) 
     
    32033195    } 
    32043196  } 
    3205    
     3197 
    32063198  m_nSize += nSize; 
    32073199  InitBuffer(); 
    3208    
     3200 
    32093201  for (i = uins.begin(); i != uins.end(); i++) 
    32103202  { 
    3211     ICQUser *pUser = gUserManager.FetchUser(*i, LICQ_PPID, LOCK_W); 
     3203    ICQUser* pUser = gUserManager.FetchUser(i->c_str(), LICQ_PPID, LOCK_W); 
    32123204    if (pUser) 
    32133205    { 
     
    32173209      if (_nType == ICQ_ROSTxNORMAL) 
    32183210        nGSID = pUser->GetGSID(); 
    3219          
    3220       buffer->PackUnsignedShortBE(strlen(*i)); 
    3221       buffer->Pack(*i, strlen(*i)); 
     3211 
     3212      buffer->PackUnsignedShortBE(i->size()); 
     3213      buffer->Pack(i->c_str(), i->size()); 
    32223214      buffer->PackUnsignedShortBE(nGSID); 
    32233215      buffer->PackUnsignedShortBE(pUser->GetSID()); 
     
    32453237      gUserManager.DropUser(pUser); 
    32463238    } 
    3247     free(*i); 
    32483239  } 
    32493240}