Author: Kev <klmitch@mit.edu>
[ircu2.10.12-pk.git] / ircd / m_version.c
index 0eb12302fa0decb31339d9c609010a340062835b..6bbc79502457a923b05b62cce8cfb9ab5ec522b6 100644 (file)
@@ -98,6 +98,7 @@
 #include "s_debug.h"
 #include "s_user.h"
 #include "send.h"
+#include "supported.h"
 #include "version.h"
 
 #include <assert.h>
@@ -116,16 +117,22 @@ int m_version(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
   {
     if (!(acptr = find_match_server(parv[1])))
     {
-      sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]);
+      send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
       return 0;
     }
-    parv[1] = acptr->name;
+    parv[1] = cli_name(acptr);
   }
 
-  if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) ==
+  if (hunt_server_cmd(sptr, CMD_VERSION, cptr, 0, ":%C", 1, parc, parv) ==
       HUNTED_ISME)
-    sendto_one(sptr, rpl_str(RPL_VERSION),
-        me.name, parv[0], version, debugmode, me.name, serveropts);
+  {
+    char featurebuf[512];
+    
+    sprintf_irc(featurebuf,FEATURES,FEATURESVALUES);
+    
+    send_reply(sptr, RPL_VERSION, version, debugmode, cli_name(&me), serveropts);
+    send_reply(sptr, RPL_ISUPPORT, featurebuf);
+  }
 
   return 0;
 }
@@ -144,16 +151,17 @@ int ms_version(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
   {
     if (!(acptr = find_match_server(parv[1])))
     {
-      sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]);
+      send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
       return 0;
     }
-    parv[1] = acptr->name;
+    parv[1] = cli_name(acptr);
   }
 
-  if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) ==
+  if (hunt_server_cmd(sptr, CMD_VERSION, cptr, 0, ":%C", 1, parc, parv) ==
       HUNTED_ISME)
-    sendto_one(sptr, rpl_str(RPL_VERSION),
-        me.name, parv[0], version, debugmode, me.name, serveropts);
+  {
+    send_reply(sptr, RPL_VERSION, version, debugmode, cli_name(&me), serveropts);
+  }
 
   return 0;
 }
@@ -173,15 +181,15 @@ int m_version(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
   {
     if (!(acptr = find_match_server(parv[1])))
     {
-      sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]);
+      sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]); /* XXX DEAD */
       return 0;
     }
     parv[1] = acptr->name;
   }
 
-  if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) ==
+  if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) == /* XXX DEAD */
       HUNTED_ISME)
-    sendto_one(sptr, rpl_str(RPL_VERSION),
+    sendto_one(sptr, rpl_str(RPL_VERSION), /* XXX DEAD */
         me.name, parv[0], version, debugmode, me.name, serveropts);
 
   return 0;