Use enum for chanmode types.
authorJelmer Vernooij <jelmer@samba.org>
Wed, 2 Jul 2008 16:37:45 +0000 (18:37 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Wed, 2 Jul 2008 16:37:45 +0000 (18:37 +0200)
lib/isupport.c
lib/isupport.h
lib/state.c
testsuite/test-networkinfo.c

index b8cd96fcf3f3c379023a76616e9f6a5706c3e979..087ba425a1e330f08c8746fff871a095daa4dbd2 100644 (file)
@@ -655,14 +655,15 @@ const static char *default_chanmodes[] = {
        "beI", "k" , "l" , "imnpsta" 
 };
 
-int network_chanmode_type(char m, struct irc_network_info *n)
+enum chanmode_type network_chanmode_type(char m, struct irc_network_info *n)
 {
        int i;
        for (i = 0; i < 4; i++) {
                if (strchr((n && n->chanmodes)?n->chanmodes[i]:default_chanmodes[i], m)) {
-                       return i;
+                       return i+1;
                }
        }
 
-       return 3;
+       return CHANMODE_UNKNOWN;
 }
+
index c51cb347a820d6d9789d8e6a63b99c0e3993beb9..50470cd678ded2bd9d81cf4f5ff9bc41ed31ece8 100644 (file)
@@ -40,6 +40,15 @@ enum casemapping {
                CASEMAP_STRICT_RFC1459 
        };
 
+
+enum chanmode_type { 
+       CHANMODE_UNKNOWN = 0,
+       CHANMODE_NICKLIST, 
+       CHANMODE_SETTING, 
+       CHANMODE_OPT_SETTING, 
+       CHANMODE_BOOL 
+};
+
 /**
  * Information about a network (doesn't change between connects or 
  * servers).
@@ -275,7 +284,7 @@ G_MODULE_EXPORT char get_prefix_by_mode(char p, const struct irc_network_info *n
 G_MODULE_EXPORT int irccmp(const struct irc_network_info *n, const char *a, const char *b);
 G_GNUC_WARN_UNUSED_RESULT G_MODULE_EXPORT const char *get_charset(const struct irc_network_info *n);
 G_MODULE_EXPORT void network_info_parse(struct irc_network_info *info, const char *parameter);
-G_MODULE_EXPORT int network_chanmode_type(char m, struct irc_network_info *n);
+G_MODULE_EXPORT enum chanmode_type network_chanmode_type(char m, struct irc_network_info *n);
 G_MODULE_EXPORT struct irc_network_info *network_info_init(void);
 G_MODULE_EXPORT void free_network_info(struct irc_network_info *info);
 
index 2277f471fdcae79cc92973a54dabe96b61cbcb96..4afdac0452dbc8f275faf683a0f140d05bbd1696 100644 (file)
@@ -923,7 +923,7 @@ static int channel_state_change_mode(struct irc_network_state *s, struct network
                } else {
                        char *be = find_realnamebanlist_entry(c->realnamebanlist, opt_arg);
                        if (be == NULL) {
-                               network_state_log(LOG_WARNING, s, "Unable to remove nonpresent realname ban list entry '%s'", opt_arg);
+                               network_state_log(LOG_WARNING, s, "Unable to remove nonpresent realname ban list entry '%s' on %s", opt_arg, c->name);
                                return 1;
                        }
                        c->realnamebanlist = g_list_remove(c->realnamebanlist, be);
index 88bbebf1f178e7bf021f7290f833aa390a0f645b..a5ced1a1eccdddbdf7afd955fb09db3e86e221ca 100644 (file)
@@ -61,22 +61,23 @@ START_TEST(test_get_charset_default)
 END_TEST
 
 START_TEST(test_chanmode_type_default)
-       fail_unless(network_chanmode_type('I', NULL) == 0);
-       fail_unless(network_chanmode_type('k', NULL) == 1);
-       fail_unless(network_chanmode_type('z', NULL) == 3);
-       fail_unless(network_chanmode_type('m', NULL) == 3);
-       fail_unless(network_chanmode_type('l', NULL) == 2);
+       fail_unless(network_chanmode_type('I', NULL) == CHANMODE_NICKLIST);
+       fail_unless(network_chanmode_type('k', NULL) == CHANMODE_SETTING);
+       fail_unless(network_chanmode_type('z', NULL) == CHANMODE_UNKNOWN);
+       fail_unless(network_chanmode_type('m', NULL) == CHANMODE_BOOL);
+       fail_unless(network_chanmode_type('l', NULL) == CHANMODE_OPT_SETTING);
 END_TEST
 
 START_TEST(test_chanmode_type_lookup)
        struct irc_network_info ni;
        memset(&ni, 0, sizeof(ni));
        network_info_parse(&ni, "CHANMODES=b,k,l,ciLmMnOprRst");
-       fail_unless(network_chanmode_type('I', &ni) == 3);
-       fail_unless(network_chanmode_type('k', &ni) == 1);
-       fail_unless(network_chanmode_type('z', &ni) == 3);
-       fail_unless(network_chanmode_type('m', &ni) == 3);
-       fail_unless(network_chanmode_type('l', &ni) == 2);
+       fail_unless(network_chanmode_type('I', &ni) == CHANMODE_UNKNOWN);
+       fail_unless(network_chanmode_type('k', &ni) == CHANMODE_SETTING);
+       fail_unless(network_chanmode_type('z', &ni) == CHANMODE_UNKNOWN);
+       fail_unless(network_chanmode_type('m', &ni) == CHANMODE_BOOL);
+       fail_unless(network_chanmode_type('l', &ni) == CHANMODE_OPT_SETTING);
+       fail_unless(network_chanmode_type('w', &ni) == CHANMODE_UNKNOWN);
 END_TEST
 
 Suite *networkinfo_suite()