+
+ char temp[MAXBUF],NICK[MAXBUF],IDENT[MAXBUF],HOST[MAXBUF];
+
+ strlcpy(temp,ban,MAXBUF);
+
+ char* pos_of_pling = strchr(temp,'!');
+ char* pos_of_at = strchr(temp,'@');
+
+ pos_of_pling[0] = '\0';
+ pos_of_at[0] = '\0';
+ pos_of_pling++;
+ pos_of_at++;
+
+ strlcpy(NICK,temp,NICKMAX-1);
+ strlcpy(IDENT,pos_of_pling,IDENTMAX+1);
+ strlcpy(HOST,pos_of_at,63);
+
+ snprintf(ban,MAXBUF,"%s!%s@%s",NICK,IDENT,HOST);
+}
+
+char lst[MAXBUF];
+
+std::string chlist(userrec *user,userrec* source)
+{
+ /* Should this be a stringstream? Not sure if it would be faster as streams are more oriented at appending stuff, which is all we do */
+ std::ostringstream list;
+
+ if (!user || !source)
+ return "";
+
+ for (std::vector<ucrec*>::const_iterator i = user->chans.begin(); i != user->chans.end(); i++)