summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-03-07 12:05:34 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-03-07 12:05:34 +0000
commit34b0ca01b6da7fc039ecdf4d0bc8bbb5bb3f64bf (patch)
tree4ac31611f90a8b5660a942fc44aee4d9305f807d /src
parent5dd6b4e97d9c63172fac90a5b2b7167214b4ba64 (diff)
Improved userlist to avoid strlen
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3514 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/helperfuncs.cpp15
-rwxr-xr-xsrc/svn-rev.sh2
-rw-r--r--src/users.cpp7
3 files changed, 11 insertions, 13 deletions
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 9cf45889f..9080cc6a5 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -1229,9 +1229,11 @@ void userlist(userrec *user,chanrec *c)
return;
}
- snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name);
+ size_t dlen = snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name);
+ size_t initial = dlen;
std::map<char*,char*> *ulist= c->GetUsers();
+
for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
{
char* o = i->second;
@@ -1242,19 +1244,20 @@ void userlist(userrec *user,chanrec *c)
* nick in NAMES list */
continue;
}
- strlcat(list,cmode(otheruser,c),MAXBUF);
- strlcat(list,otheruser->nick,MAXBUF);
+ dlen += strlcat(list,cmode(otheruser,c),MAXBUF);
+ dlen += strlcat(list,otheruser->nick,MAXBUF);
charlcat(list,' ',MAXBUF);
- if (strlen(list)>(480-NICKMAX))
+ dlen++;
+ if (dlen > (480-NICKMAX))
{
/* list overflowed into
* multiple numerics */
WriteServ_NoFormat(user->fd,list);
- snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name);
+ dlen = snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name);
}
}
/* if whats left in the list isnt empty, send it */
- if (list[strlen(list)-1] != ':')
+ if (dlen != initial)
{
WriteServ_NoFormat(user->fd,list);
}
diff --git a/src/svn-rev.sh b/src/svn-rev.sh
index 4ec28ae33..0df5e545b 100755
--- a/src/svn-rev.sh
+++ b/src/svn-rev.sh
@@ -1 +1 @@
-echo 3506
+echo 3513
diff --git a/src/users.cpp b/src/users.cpp
index e4d2546a9..516c58e70 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -420,12 +420,7 @@ void kill_link(userrec *user,const char* r)
char reason[MAXBUF];
- strlcpy(reason,r,MAXBUF-1);
-
- if (strlen(reason)>MAXQUIT)
- {
- reason[MAXQUIT-1] = '\0';
- }
+ strlcpy(reason,r,MAXQUIT-1);
log(DEBUG,"kill_link: %s '%s'",user->nick,reason);
Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason);