Committer  : entrope
CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Branch tags: u2_10_12_branch
Commit time: 2005-10-06 04:00:36 UTC

Modified files:
  Tag: u2_10_12_branch
     ChangeLog ircd/m_names.c

Log message:

Properly support /names -D #channel server.*.

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.710.2.6 ircu2.10/ChangeLog:1.710.2.7
--- ircu2.10/ChangeLog:1.710.2.6        Wed Oct  5 17:37:31 2005
+++ ircu2.10/ChangeLog  Wed Oct  5 21:00:25 2005
@@ -1,5 +1,11 @@
 2005-10-05  Michael Poole <[EMAIL PROTECTED]>
 
+       * ircd/m_names.c (m_names): Fix format string when forwarding
+       /names -D to other servers.
+       (ms_names): Likewise.  Add support for remote /names -D.
+
+2005-10-05  Michael Poole <[EMAIL PROTECTED]>
+
        * ircd/class.c (do_find_class): Fix bug from previous commit.
 
        * ircd/ircd_parser.y (clientblock): Allow setting Client port.
Index: ircu2.10/ircd/m_names.c
diff -u ircu2.10/ircd/m_names.c:1.22 ircu2.10/ircd/m_names.c:1.22.2.1
--- ircu2.10/ircd/m_names.c:1.22        Tue Sep 13 08:17:46 2005
+++ ircu2.10/ircd/m_names.c     Wed Oct  5 21:00:26 2005
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
- * $Id: m_names.c,v 1.22 2005/09/13 15:17:46 entrope Exp $
+ * $Id: m_names.c,v 1.22.2.1 2005/10/06 04:00:26 entrope Exp $
  */
 
 /*
@@ -226,12 +226,12 @@
   int showingdelayed = 0;
 
   if (parc > 1 && !ircd_strcmp(parv[1], "-D")) {
-      para = (parc > 2) ? parv[2] : 0;
-      showingdelayed = 1;
-  }
-
-  if ((parc - showingdelayed) > 2 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, 
"%s %C", 2+showingdelayed, parc, parv))
-    return 0; 
+    para = (parc > 2) ? parv[2] : 0;
+    showingdelayed = 1;
+    if (parc > 3 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, "%s %s %C", 3, 
parc, parv))
+      return 0;
+  } else if (parc > 2 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, "%s %C", 2, 
parc, parv))
+    return 0;
 
   if (EmptyString(para)) {
     send_reply(sptr, RPL_ENDOFNAMES, "*");
@@ -370,9 +370,15 @@
   struct Membership* member; 
   char* s;
   char* para = parc > 1 ? parv[1] : 0; 
+  int showingdelayed = 0;
 
-  if (parc > 2 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, "%s %C", 2, parc, 
parv))
-    return 0; 
+  if (parc > 1 && !ircd_strcmp(parv[1], "-D")) {
+    para = (parc > 2) ? parv[2] : 0;
+    showingdelayed = NAMES_DEL;
+    if (parc > 3 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, "%s %s %C", 3, 
parc, parv))
+      return 0;
+  } else if (parc > 2 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, "%s %C", 2, 
parc, parv))
+    return 0;
 
   if (EmptyString(para)) {
     send_reply(sptr, RPL_ENDOFNAMES, "*");
@@ -383,7 +389,7 @@
   
   s = strchr(para, ','); /* Recursively call m_names for each comma-separated 
channel. */
   if (s) {
-    parv[1] = ++s;
+    parv[1+!!showingdelayed] = ++s;
     m_names(cptr, sptr, parc, parv);
   }
  
@@ -410,9 +416,9 @@
 
       if (find_channel_member(sptr, ch2ptr))
       {
-        do_names(sptr, ch2ptr, NAMES_ALL); /* Full list if we're in this chan. 
*/
+        do_names(sptr, ch2ptr, showingdelayed|NAMES_ALL); /* Full list if 
we're in this chan. */
       } else { 
-        do_names(sptr, ch2ptr, NAMES_VIS);
+        do_names(sptr, ch2ptr, showingdelayed|NAMES_VIS);
       }
     } 
  
@@ -474,7 +480,7 @@
     member = find_member_link(chptr, sptr);
     if (member)
     { 
-      do_names(sptr, chptr, NAMES_ALL);
+      do_names(sptr, chptr, showingdelayed|NAMES_ALL);
       if (!EmptyString(para))
       {
         send_reply(sptr, RPL_ENDOFNAMES, chptr ? chptr->chname : para);
@@ -487,7 +493,7 @@
        *  Special Case 3: User isn't on this channel, show all visible users, 
in 
        *  non secret channels.
        */ 
-      do_names(sptr, chptr, NAMES_VIS);
+      do_names(sptr, chptr, showingdelayed|NAMES_VIS);
     } 
   } else { /* Channel doesn't exist. */ 
       send_reply(sptr, RPL_ENDOFNAMES, para); 
----------------------- End of diff -----------------------
_______________________________________________
Patches mailing list
[email protected]
http://undernet.sbg.org/mailman/listinfo/patches

Reply via email to