]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/supported.c
Allow ENCAP GCAP to be reused to broadcast capability changes to the network.
[irc/rqf/shadowircd.git] / src / supported.c
index ea7a3070104a2e9bf4bc90ffd64cfc07ec64446b..da3a2f21526f8cef8656e8360eac4232319fd92f 100644 (file)
 #include "numeric.h"
 #include "ircd.h"
 #include "s_conf.h"
+#include "supported.h"
 
 dlink_list isupportlist;
 
 struct isupportitem
 {
        const char *name;
-       const char *(*func)(void *);
-       void *param;
+       const char *(*func)(const void *);
+       const void *param;
        dlink_node node;
 };
 
 void
-add_isupport(const char *name, const char *(*func)(void *), void *param)
+add_isupport(const char *name, const char *(*func)(const void *), const void *param)
 {
        struct isupportitem *item;
 
@@ -137,7 +138,7 @@ show_isupport(struct Client *client_p)
        const char *value;
        char buf[512];
        int extra_space;
-       int nchars, nparams;
+       unsigned int nchars, nparams;
        int l;
 
        extra_space = strlen(client_p->name);
@@ -177,50 +178,49 @@ show_isupport(struct Client *client_p)
 }
 
 const char *
-isupport_intptr(void *ptr)
+isupport_intptr(const void *ptr)
 {
        static char buf[15];
-
-       ircsnprintf(buf, sizeof buf, "%d", *(int *)ptr);
+       ircsnprintf(buf, sizeof buf, "%d", *(const int *)ptr);
        return buf;
 }
 
 const char *
-isupport_boolean(void *ptr)
+isupport_boolean(const void *ptr)
 {
 
-       return *(int *)ptr ? "" : NULL;
+       return *(const int *)ptr ? "" : NULL;
 }
 
 const char *
-isupport_string(void *ptr)
+isupport_string(const void *ptr)
 {
 
        return (const char *)ptr;
 }
 
 const char *
-isupport_stringptr(void *ptr)
+isupport_stringptr(const void *ptr)
 {
-
-       return *(const char **)ptr;
+       return *(char * const *)ptr;    
 }
 
-const char *
-isupport_chanmodes(void *ptr)
+static const char *
+isupport_chanmodes(const void *ptr)
 {
        static char result[80];
 
-       ircsnprintf(result, sizeof result, "%s%sbq,k,%slj,imnpstrcgzLP%s",
+       ircsnprintf(result, sizeof result, "%s%sbq,k,%slj,imnpst%scgzLP%s",
                        ConfigChannel.use_except ? "e" : "",
                        ConfigChannel.use_invex ? "I" : "",
                        ConfigChannel.use_forward ? "f" : "",
+                       dlink_list_length(&service_list) ? "r" : "",
                        ConfigChannel.use_forward ? "QF" : "");
        return result;
 }
 
-const char *
-isupport_chanlimit(void *ptr)
+static const char *
+isupport_chanlimit(const void *ptr)
 {
        static char result[30];
 
@@ -228,8 +228,8 @@ isupport_chanlimit(void *ptr)
        return result;
 }
 
-const char *
-isupport_maxlist(void *ptr)
+static const char *
+isupport_maxlist(const void *ptr)
 {
        static char result[30];
 
@@ -240,8 +240,8 @@ isupport_maxlist(void *ptr)
        return result;
 }
 
-const char *
-isupport_targmax(void *ptr)
+static const char *
+isupport_targmax(const void *ptr)
 {
        static char result[200];
 
@@ -251,8 +251,8 @@ isupport_targmax(void *ptr)
        return result;
 }
 
-const char *
-isupport_extban(void *ptr)
+static const char *
+isupport_extban(const void *ptr)
 {
        const char *p;
        static char result[200];