]> jfr.im git - irc/weechat/weechat.git/commitdiff
irc: add function irc_server_get_chantypes
authorSébastien Helleu <redacted>
Sat, 30 Jan 2021 09:34:23 +0000 (10:34 +0100)
committerSébastien Helleu <redacted>
Sat, 30 Jan 2021 09:34:23 +0000 (10:34 +0100)
src/plugins/irc/irc-channel.c
src/plugins/irc/irc-nick.c
src/plugins/irc/irc-server.c
src/plugins/irc/irc-server.h

index cd5d034e79ece205370bcc2d4c8ae38dc2802f67..b81f87f73e4f843d24b21acb59b3d642a7e7de6e 100644 (file)
@@ -675,14 +675,8 @@ irc_channel_is_channel (struct t_irc_server *server, const char *string)
     first_char[0] = string[0];
     first_char[1] = '\0';
 
-    /* default global chantypes if no server received */
-    if (!server)
-        return (strpbrk (first_char, irc_channel_default_chantypes)) ? 1 : 0;
-
-    /* server chantypes, or option "default_chantypes" as fallback */
-    ptr_chantypes = (server->chantypes) ?
-        server->chantypes :
-        IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_DEFAULT_CHANTYPES);
+    ptr_chantypes = irc_server_get_chantypes (server);
+
     return (strpbrk (first_char, ptr_chantypes)) ? 1 : 0;
 }
 
@@ -707,9 +701,7 @@ irc_channel_get_auto_chantype (struct t_irc_server *server,
     if (weechat_config_boolean (irc_config_look_join_auto_add_chantype)
         && !irc_channel_is_channel (server, channel_name))
     {
-        ptr_chantypes = (server->chantypes) ?
-            server->chantypes :
-            IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_DEFAULT_CHANTYPES);
+        ptr_chantypes = irc_server_get_chantypes (server);
         if (ptr_chantypes && ptr_chantypes[0])
         {
             /*
index e09b41d44326e35de8fbb8f725fef14ba3a7d296..67390354b3ef7e2d76accf108e7ee1b184b74243 100644 (file)
@@ -81,16 +81,7 @@ irc_nick_is_nick (struct t_irc_server *server, const char *string)
     utf8mapping = (server) ? server->utf8mapping : IRC_SERVER_UTF8MAPPING_NONE;
     ptr_prefix_chars = (server && server->prefix_chars) ?
         server->prefix_chars : irc_server_prefix_chars_default;
-    if (server)
-    {
-        ptr_chantypes = (server->chantypes) ?
-            server->chantypes :
-            IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_DEFAULT_CHANTYPES);
-    }
-    else
-    {
-        ptr_chantypes = irc_channel_default_chantypes;
-    }
+    ptr_chantypes = irc_server_get_chantypes (server);
 
     /* check length of nick in bytes (if we have a limit in the server) */
     if (server && (server->nick_max_length > 0)
index 2695dbff131f66b9c26d623074984d98a44645e2..f7b2138f217e0d8e59f4dc1d1a545ac3e6ce8b56 100644 (file)
@@ -1000,6 +1000,25 @@ irc_server_get_isupport_value (struct t_irc_server *server, const char *feature)
     return NULL;
 }
 
+/*
+ * Gets "chantypes" for the server:
+ *   - if server is NULL, returns pointer to irc_channel_default_chantypes
+ *   - if server is not NULL, returns either chantypes in the server or
+ *     server option "default_chantypes"
+ */
+
+const char *
+irc_server_get_chantypes (struct t_irc_server *server)
+{
+    if (!server)
+        return irc_channel_default_chantypes;
+
+    if (server->chantypes)
+        return server->chantypes;
+
+    return IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_DEFAULT_CHANTYPES);
+}
+
 /*
  * Sets "prefix_modes" and "prefix_chars" in server using value of PREFIX in IRC
  * message 005.
index f62f84a1e772041605c2e76ecfc876a70e6f75ee..11d8bf281ef079f89970c2f9be84d06239ad578c 100644 (file)
@@ -319,6 +319,7 @@ extern void irc_server_set_host (struct t_irc_server *server,
 extern const char *irc_server_get_alternate_nick (struct t_irc_server *server);
 extern const char *irc_server_get_isupport_value (struct t_irc_server *server,
                                                   const char *feature);
+extern const char *irc_server_get_chantypes (struct t_irc_server *server);
 extern void irc_server_set_prefix_modes_chars (struct t_irc_server *server,
                                                const char *prefix);
 extern void irc_server_set_lag (struct t_irc_server *server);