Author: Isomer <isomer@coders.net>
authorPerry Lorier <isomer@undernet.org>
Sun, 3 Dec 2000 11:42:12 +0000 (11:42 +0000)
committerPerry Lorier <isomer@undernet.org>
Sun, 3 Dec 2000 11:42:12 +0000 (11:42 +0000)
Log message:

Added 'End of Names' when joining channel.  thanks to hektik for pointing
this out.

Testing needed:
 * Make sure it displays End Of Names when it should
 * Make sure it doesn't display End Of Names when it shouldn't

git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@320 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
include/s_user.h
ircd/m_join.c
ircd/m_names.c

index e966b5a6257f448fa72e3cbd73ada264f274f6a2..df70ed1812fb37bd57f5cb4a78fd72dbbaf3ab22 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-12-04  Isomer <isomer@coders.net>
+       * ircd/m_names.c: Add NAMES_EON to do_names to say add a
+       'end_of_names' reply when done.
+       * ircd/m_join.c: use NAMES_EON as mentioned above
+
 2000-12-01  net  <simms@LUCIDA.QC.CA>
 
        * ircd/motd.c: add a freelist for struct Motds
index e3e70c7846d87d0e0e1839b4ed249674e0904077..274bf4a6511b517a07a922dba8805c56003a3c18 100644 (file)
@@ -96,6 +96,7 @@ extern unsigned int umode_make_snomask(unsigned int oldmask, char *arg,
 
 #define NAMES_ALL 1 /* List all users in channel */
 #define NAMES_VIS 2 /* List only visible users in non-secret channels */
+#define NAMES_EON 4 /* Add an 'End Of Names' reply to the end */
 
 void do_names(struct Client* sptr, struct Channel* chptr, int filter);
 
index e6fea02fbb745d8204ccc55e5974c1fd80efd68e..8908bdf7dff199b2fcaff2530d4daf68eaf5894a 100644 (file)
@@ -292,7 +292,7 @@ int m_join(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
                 chptr->topic_time);
     }
 
-    do_names(sptr, chptr, NAMES_ALL); /* send /names list */
+    do_names(sptr, chptr, NAMES_ALL|NAMES_EON); /* send /names list */
   }
 
   joinbuf_flush(&join); /* must be first, if there's a JOIN 0 */
index 56cc590a7538770287dd7b1fee510e9ad120b922..1c69828aaf06c214021e84822d09f5f0d0c5e72e 100644 (file)
  *
  *  NAMES_ALL - Lists all users on channel.
  *  NAMES_VIS - Only list visible (-i) users. --Gte (04/06/2000).
+ *  NAMES_EON - When OR'd with the other two, adds an 'End of Names' numeric
+ *              used by m_join
  *
  */
 
@@ -121,6 +123,10 @@ void do_names(struct Client* sptr, struct Channel* chptr, int filter)
   char buf[BUFSIZE];
   struct Client *c2ptr;
   struct Membership* member;
+  
+  assert(chptr);
+  assert(sptr);
+  assert((filter&NAMES_ALL) != (filter&NAMES_VIS));
 
   /* Tag Pub/Secret channels accordingly. */
 
@@ -149,7 +155,7 @@ void do_names(struct Client* sptr, struct Channel* chptr, int filter)
   {
     c2ptr = member->user;
 
-    if ((filter == NAMES_VIS) && IsInvisible(c2ptr))
+    if (((filter&NAMES_VIS)!=0) && IsInvisible(c2ptr))
       continue;
 
     if (IsZombie(member) && member->user != sptr)
@@ -197,6 +203,8 @@ void do_names(struct Client* sptr, struct Channel* chptr, int filter)
   }
   if (flag)
     send_reply(sptr, RPL_NAMREPLY, buf); 
+  if (filter&NAMES_EON)
+    send_reply(sptr, RPL_ENDOFNAMES, chptr->chname);
 }
 
 /*