+ /* there is a topic, assume topic related information exists */
+ Srv->SendTo(NULL, user, checkstr + " topic " + targchan->topic);
+ Srv->SendTo(NULL, user, checkstr + " topic_setby " + targchan->setby);
+ mytime = gmtime(&topic_time);
+ strftime(timebuf, 59, "%Y/%m/%d - %H:%M:%S", mytime);
+ Srv->SendTo(NULL, user, checkstr + " topic_setat " + timebuf);
+ }
+
+ Srv->SendTo(NULL, user, checkstr + " modes " + chanmodes(targchan, true));
+ Srv->SendTo(NULL, user, checkstr + " membercount " + ConvToStr(targchan->GetUserCounter()));
+
+ /* now the ugly bit, spool current members of a channel. :| */
+
+ CUList *ulist= targchan->GetUsers();
+
+ /* note that unlike /names, we do NOT check +i vs in the channel */
+ for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++)
+ {
+ char list[MAXBUF];
+ char tmpbuf[MAXBUF];
+ char* ptr = list;
+ int flags = cflags(i->second, targchan);
+ /*
+ * find how many connections from this user's IP -- unlike Asuka,
+ * I define a clone as coming from the same host. --w00t
+ */
+ sprintf(ptr, "%lu ", FindMatchingGlobal(i->second));
+
+ if (flags & UCMODE_OP)