summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-im/bitlbee/files')
-rw-r--r--net-im/bitlbee/files/bitlbee-3.5-libcheck.patch645
-rw-r--r--net-im/bitlbee/files/bitlbee-3.5-libevent.patch71
-rw-r--r--net-im/bitlbee/files/bitlbee-3.5-verbose-build.patch200
-rw-r--r--net-im/bitlbee/files/bitlbee-3.6-disabled-plugins-use.patch55
-rw-r--r--net-im/bitlbee/files/bitlbee-3.6-system-json-parser.patch99
-rw-r--r--net-im/bitlbee/files/bitlbee.confd-r18
-rw-r--r--net-im/bitlbee/files/bitlbee.initd-r130
-rw-r--r--net-im/bitlbee/files/bitlbee.initd-r22
8 files changed, 871 insertions, 239 deletions
diff --git a/net-im/bitlbee/files/bitlbee-3.5-libcheck.patch b/net-im/bitlbee/files/bitlbee-3.5-libcheck.patch
new file mode 100644
index 000000000000..474789e5e1c9
--- /dev/null
+++ b/net-im/bitlbee/files/bitlbee-3.5-libcheck.patch
@@ -0,0 +1,645 @@
+diff --git a/tests/check_arc.c b/tests/check_arc.c
+index 9fcd4b25..c7e1dfef 100644
+--- a/tests/check_arc.c
++++ b/tests/check_arc.c
+@@ -17,7 +17,7 @@ char *clear_tests[] =
+ NULL
+ };
+
+-static void check_codec(int l)
++START_TEST(check_codec)
+ {
+ int i;
+
+@@ -37,6 +37,7 @@ static void check_codec(int l)
+ g_free(decrypted);
+ }
+ }
++END_TEST
+
+ struct {
+ unsigned char crypted[30];
+@@ -72,7 +73,7 @@ struct {
+ { "", 0, NULL }
+ };
+
+-static void check_decod(int l)
++START_TEST(check_decod)
+ {
+ int i;
+
+@@ -92,6 +93,7 @@ static void check_decod(int l)
+ g_free(decrypted);
+ }
+ }
++END_TEST
+
+ Suite *arc_suite(void)
+ {
+diff --git a/tests/check_help.c b/tests/check_help.c
+index 92d7c28f..ccf136a4 100644
+--- a/tests/check_help.c
++++ b/tests/check_help.c
+@@ -7,20 +7,24 @@
+ #include "help.h"
+
+ START_TEST(test_help_initfree)
+-help_t * h, *r;
+-r = help_init(&h, "/dev/null");
+-fail_if(r == NULL);
+-fail_if(r != h);
++{
++ help_t * h, *r;
++ r = help_init(&h, "/dev/null");
++ fail_if(r == NULL);
++ fail_if(r != h);
+
+-help_free(&h);
+-fail_if(h != NULL);
++ help_free(&h);
++ fail_if(h != NULL);
++}
+ END_TEST
+
+ START_TEST(test_help_nonexistent)
+-help_t * h, *r;
+-r = help_init(&h, "/dev/null");
+-fail_unless(help_get(&h, "nonexistent") == NULL);
+-fail_if(r == NULL);
++{
++ help_t * h, *r;
++ r = help_init(&h, "/dev/null");
++ fail_unless(help_get(&h, "nonexistent") == NULL);
++ fail_if(r == NULL);
++}
+ END_TEST
+
+ Suite *help_suite(void)
+diff --git a/tests/check_irc.c b/tests/check_irc.c
+index 5c940729..e2054106 100644
+--- a/tests/check_irc.c
++++ b/tests/check_irc.c
+@@ -8,49 +8,53 @@
+ #include "testsuite.h"
+
+ START_TEST(test_connect)
+-GIOChannel * ch1, *ch2;
+-irc_t *irc;
+-char *raw;
+-fail_unless(g_io_channel_pair(&ch1, &ch2));
++{
++ GIOChannel * ch1, *ch2;
++ irc_t *irc;
++ char *raw;
++ fail_unless(g_io_channel_pair(&ch1, &ch2));
+
+-irc = irc_new(g_io_channel_unix_get_fd(ch1));
++ irc = irc_new(g_io_channel_unix_get_fd(ch1));
+
+-irc_free(irc);
++ irc_free(irc);
+
+-fail_unless(g_io_channel_read_to_end(ch2, &raw, NULL, NULL) == G_IO_STATUS_NORMAL);
++ fail_unless(g_io_channel_read_to_end(ch2, &raw, NULL, NULL) == G_IO_STATUS_NORMAL);
+
+-fail_if(strcmp(raw, "") != 0);
++ fail_if(strcmp(raw, "") != 0);
+
+-g_free(raw);
++ g_free(raw);
++}
+ END_TEST
+
+ START_TEST(test_login)
+-GIOChannel * ch1, *ch2;
+-irc_t *irc;
+-char *raw;
+-fail_unless(g_io_channel_pair(&ch1, &ch2));
++{
++ GIOChannel * ch1, *ch2;
++ irc_t *irc;
++ char *raw;
++ fail_unless(g_io_channel_pair(&ch1, &ch2));
+
+-g_io_channel_set_flags(ch1, G_IO_FLAG_NONBLOCK, NULL);
+-g_io_channel_set_flags(ch2, G_IO_FLAG_NONBLOCK, NULL);
++ g_io_channel_set_flags(ch1, G_IO_FLAG_NONBLOCK, NULL);
++ g_io_channel_set_flags(ch2, G_IO_FLAG_NONBLOCK, NULL);
+
+-irc = irc_new(g_io_channel_unix_get_fd(ch1));
++ irc = irc_new(g_io_channel_unix_get_fd(ch1));
+
+-fail_unless(g_io_channel_write_chars(ch2, "NICK bla\r\r\n"
+- "USER a a a a\n", -1, NULL, NULL) == G_IO_STATUS_NORMAL);
+-fail_unless(g_io_channel_flush(ch2, NULL) == G_IO_STATUS_NORMAL);
++ fail_unless(g_io_channel_write_chars(ch2, "NICK bla\r\r\n"
++ "USER a a a a\n", -1, NULL, NULL) == G_IO_STATUS_NORMAL);
++ fail_unless(g_io_channel_flush(ch2, NULL) == G_IO_STATUS_NORMAL);
+
+-g_main_iteration(FALSE);
+-irc_free(irc);
++ g_main_iteration(FALSE);
++ irc_free(irc);
+
+-fail_unless(g_io_channel_read_to_end(ch2, &raw, NULL, NULL) == G_IO_STATUS_NORMAL);
++ fail_unless(g_io_channel_read_to_end(ch2, &raw, NULL, NULL) == G_IO_STATUS_NORMAL);
+
+-fail_unless(strstr(raw, "001") != NULL);
+-fail_unless(strstr(raw, "002") != NULL);
+-fail_unless(strstr(raw, "003") != NULL);
+-fail_unless(strstr(raw, "004") != NULL);
+-fail_unless(strstr(raw, "005") != NULL);
++ fail_unless(strstr(raw, "001") != NULL);
++ fail_unless(strstr(raw, "002") != NULL);
++ fail_unless(strstr(raw, "003") != NULL);
++ fail_unless(strstr(raw, "004") != NULL);
++ fail_unless(strstr(raw, "005") != NULL);
+
+-g_free(raw);
++ g_free(raw);
++}
+ END_TEST
+
+ Suite *irc_suite(void)
+diff --git a/tests/check_jabber_sasl.c b/tests/check_jabber_sasl.c
+index e7ea8a75..b6c34bb8 100644
+--- a/tests/check_jabber_sasl.c
++++ b/tests/check_jabber_sasl.c
+@@ -77,7 +77,7 @@ struct {
+ { NULL, NULL, NULL }
+ };
+
+-static void check_get_part(int l)
++START_TEST(check_get_part)
+ {
+ int i;
+
+@@ -103,6 +103,7 @@ static void check_get_part(int l)
+ g_free(res);
+ }
+ }
++END_TEST
+
+ Suite *jabber_sasl_suite(void)
+ {
+diff --git a/tests/check_jabber_util.c b/tests/check_jabber_util.c
+index e4d4533a..411f58b1 100644
+--- a/tests/check_jabber_util.c
++++ b/tests/check_jabber_util.c
+@@ -8,7 +8,7 @@
+
+ static struct im_connection *ic;
+
+-static void check_buddy_add(int l)
++START_TEST(check_buddy_add)
+ {
+ struct jabber_buddy *budw1, *budw2, *budw3, *budn, *bud;
+
+@@ -93,8 +93,9 @@ static void check_buddy_add(int l)
+ fail_unless(jabber_buddy_remove(ic, "bugtest@google.com/B"));
+ fail_unless(jabber_buddy_remove(ic, "bugtest@google.com/C"));
+ }
++END_TEST
+
+-static void check_compareJID(int l)
++START_TEST(check_compareJID)
+ {
+ fail_unless(jabber_compare_jid("bugtest@google.com/B", "bugtest@google.com/A"));
+ fail_if(jabber_compare_jid("bugtest1@google.com/B", "bugtest@google.com/A"));
+@@ -105,8 +106,9 @@ static void check_compareJID(int l)
+ fail_if(jabber_compare_jid(NULL, ""));
+ fail_if(jabber_compare_jid("", NULL));
+ }
++END_TEST
+
+-static void check_hipchat_slug(int l)
++START_TEST(check_hipchat_slug)
+ {
+ int i;
+
+@@ -124,6 +126,7 @@ static void check_hipchat_slug(int l)
+ g_free(new);
+ }
+ }
++END_TEST
+
+ Suite *jabber_util_suite(void)
+ {
+diff --git a/tests/check_md5.c b/tests/check_md5.c
+index a68df687..5ca52a5b 100644
+--- a/tests/check_md5.c
++++ b/tests/check_md5.c
+@@ -29,7 +29,7 @@ struct md5_test {
+ { NULL },
+ };
+
+-static void check_sums(int l)
++START_TEST(check_sums)
+ {
+ int i;
+
+@@ -45,6 +45,7 @@ static void check_sums(int l)
+ fail_if(memcmp(tests[i].expected, sum, 16) != 0, "%s failed", tests[i].str);
+ }
+ }
++END_TEST
+
+ Suite *md5_suite(void)
+ {
+diff --git a/tests/check_set.c b/tests/check_set.c
+index 6f8b39b5..cf9429e6 100644
+--- a/tests/check_set.c
++++ b/tests/check_set.c
+@@ -7,97 +7,123 @@
+ #include "testsuite.h"
+
+ START_TEST(test_set_add)
+-void *data = "data";
+-set_t *s = NULL, *t;
+-t = set_add(&s, "name", "default", NULL, data);
+-fail_unless(s == t);
+-fail_unless(t->data == data);
+-fail_unless(strcmp(t->def, "default") == 0);
++{
++ void *data = "data";
++ set_t *s = NULL, *t;
++ t = set_add(&s, "name", "default", NULL, data);
++ fail_unless(s == t);
++ fail_unless(t->data == data);
++ fail_unless(strcmp(t->def, "default") == 0);
++}
+ END_TEST
+
+ START_TEST(test_set_add_existing)
+-void *data = "data";
+-set_t *s = NULL, *t;
+-t = set_add(&s, "name", "default", NULL, data);
+-t = set_add(&s, "name", "newdefault", NULL, data);
+-fail_unless(s == t);
+-fail_unless(strcmp(t->def, "newdefault") == 0);
++{
++ void *data = "data";
++ set_t *s = NULL, *t;
++ t = set_add(&s, "name", "default", NULL, data);
++ t = set_add(&s, "name", "newdefault", NULL, data);
++ fail_unless(s == t);
++ fail_unless(strcmp(t->def, "newdefault") == 0);
++}
+ END_TEST
+
+ START_TEST(test_set_find_unknown)
+-set_t * s = NULL;
+-fail_unless(set_find(&s, "foo") == NULL);
++{
++ set_t * s = NULL;
++ fail_unless(set_find(&s, "foo") == NULL);
++}
+ END_TEST
+
+ START_TEST(test_set_find)
+-void *data = "data";
+-set_t *s = NULL, *t;
+-t = set_add(&s, "name", "default", NULL, data);
+-fail_unless(s == t);
+-fail_unless(set_find(&s, "name") == t);
++{
++ void *data = "data";
++ set_t *s = NULL, *t;
++ t = set_add(&s, "name", "default", NULL, data);
++ fail_unless(s == t);
++ fail_unless(set_find(&s, "name") == t);
++}
+ END_TEST
+
+ START_TEST(test_set_get_str_default)
+-void *data = "data";
+-set_t *s = NULL, *t;
+-t = set_add(&s, "name", "default", NULL, data);
+-fail_unless(s == t);
+-fail_unless(strcmp(set_getstr(&s, "name"), "default") == 0);
++{
++ void *data = "data";
++ set_t *s = NULL, *t;
++ t = set_add(&s, "name", "default", NULL, data);
++ fail_unless(s == t);
++ fail_unless(strcmp(set_getstr(&s, "name"), "default") == 0);
++}
+ END_TEST
+
+ START_TEST(test_set_get_bool_default)
+-void *data = "data";
+-set_t *s = NULL, *t;
+-t = set_add(&s, "name", "true", NULL, data);
+-fail_unless(s == t);
+-fail_unless(set_getbool(&s, "name"));
++{
++ void *data = "data";
++ set_t *s = NULL, *t;
++ t = set_add(&s, "name", "true", NULL, data);
++ fail_unless(s == t);
++ fail_unless(set_getbool(&s, "name"));
++}
+ END_TEST
+
+ START_TEST(test_set_get_bool_integer)
+-void *data = "data";
+-set_t *s = NULL, *t;
+-t = set_add(&s, "name", "3", NULL, data);
+-fail_unless(s == t);
+-fail_unless(set_getbool(&s, "name") == 3);
++{
++ void *data = "data";
++ set_t *s = NULL, *t;
++ t = set_add(&s, "name", "3", NULL, data);
++ fail_unless(s == t);
++ fail_unless(set_getbool(&s, "name") == 3);
++}
+ END_TEST
+
+ START_TEST(test_set_get_bool_unknown)
+-set_t * s = NULL;
+-fail_unless(set_getbool(&s, "name") == 0);
++{
++ set_t * s = NULL;
++ fail_unless(set_getbool(&s, "name") == 0);
++}
+ END_TEST
+
+ START_TEST(test_set_get_str_value)
+-void *data = "data";
+-set_t *s = NULL;
+-set_add(&s, "name", "default", NULL, data);
+-set_setstr(&s, "name", "foo");
+-fail_unless(strcmp(set_getstr(&s, "name"), "foo") == 0);
++{
++ void *data = "data";
++ set_t *s = NULL;
++ set_add(&s, "name", "default", NULL, data);
++ set_setstr(&s, "name", "foo");
++ fail_unless(strcmp(set_getstr(&s, "name"), "foo") == 0);
++}
+ END_TEST
+
+ START_TEST(test_set_get_str_unknown)
+-set_t * s = NULL;
+-fail_unless(set_getstr(&s, "name") == NULL);
++{
++ set_t * s = NULL;
++ fail_unless(set_getstr(&s, "name") == NULL);
++}
+ END_TEST
+
+ START_TEST(test_setint)
+-void *data = "data";
+-set_t *s = NULL;
+-set_add(&s, "name", "10", NULL, data);
+-set_setint(&s, "name", 3);
+-fail_unless(set_getint(&s, "name") == 3);
++{
++ void *data = "data";
++ set_t *s = NULL;
++ set_add(&s, "name", "10", NULL, data);
++ set_setint(&s, "name", 3);
++ fail_unless(set_getint(&s, "name") == 3);
++}
+ END_TEST
+
+ START_TEST(test_setstr)
+-void *data = "data";
+-set_t *s = NULL;
+-set_add(&s, "name", "foo", NULL, data);
+-set_setstr(&s, "name", "bloe");
+-fail_unless(strcmp(set_getstr(&s, "name"), "bloe") == 0);
++{
++ void *data = "data";
++ set_t *s = NULL;
++ set_add(&s, "name", "foo", NULL, data);
++ set_setstr(&s, "name", "bloe");
++ fail_unless(strcmp(set_getstr(&s, "name"), "bloe") == 0);
++}
+ END_TEST
+
+ START_TEST(test_set_get_int_unknown)
+-set_t * s = NULL;
+-fail_unless(set_getint(&s, "foo") == 0);
++{
++ set_t * s = NULL;
++ fail_unless(set_getint(&s, "foo") == 0);
++}
+ END_TEST
+
+ Suite *set_suite(void)
+diff --git a/tests/check_util.c b/tests/check_util.c
+index 44a223ae..2d79417e 100644
+--- a/tests/check_util.c
++++ b/tests/check_util.c
+@@ -8,7 +8,8 @@
+ #include "misc.h"
+ #include "url.h"
+
+-START_TEST(test_strip_linefeed){
++START_TEST(test_strip_linefeed)
++{
+ int i;
+ const char *get[] = { "Test", "Test\r", "Test\rX\r", NULL };
+ const char *expected[] = { "Test", "Test", "TestX", NULL };
+@@ -43,63 +44,73 @@ START_TEST(test_strip_newlines)
+ END_TEST
+
+ START_TEST(test_set_url_http)
+-url_t url;
+-
+-fail_if(0 == url_set(&url, "http://host/"));
+-fail_unless(!strcmp(url.host, "host"));
+-fail_unless(!strcmp(url.file, "/"));
+-fail_unless(!strcmp(url.user, ""));
+-fail_unless(!strcmp(url.pass, ""));
+-fail_unless(url.proto == PROTO_HTTP);
+-fail_unless(url.port == 80);
++{
++ url_t url;
++
++ fail_if(0 == url_set(&url, "http://host/"));
++ fail_unless(!strcmp(url.host, "host"));
++ fail_unless(!strcmp(url.file, "/"));
++ fail_unless(!strcmp(url.user, ""));
++ fail_unless(!strcmp(url.pass, ""));
++ fail_unless(url.proto == PROTO_HTTP);
++ fail_unless(url.port == 80);
++}
+ END_TEST
+
+ START_TEST(test_set_url_https)
+-url_t url;
+-
+-fail_if(0 == url_set(&url, "https://ahost/AimeeMann"));
+-fail_unless(!strcmp(url.host, "ahost"));
+-fail_unless(!strcmp(url.file, "/AimeeMann"));
+-fail_unless(!strcmp(url.user, ""));
+-fail_unless(!strcmp(url.pass, ""));
+-fail_unless(url.proto == PROTO_HTTPS);
+-fail_unless(url.port == 443);
++{
++ url_t url;
++
++ fail_if(0 == url_set(&url, "https://ahost/AimeeMann"));
++ fail_unless(!strcmp(url.host, "ahost"));
++ fail_unless(!strcmp(url.file, "/AimeeMann"));
++ fail_unless(!strcmp(url.user, ""));
++ fail_unless(!strcmp(url.pass, ""));
++ fail_unless(url.proto == PROTO_HTTPS);
++ fail_unless(url.port == 443);
++}
+ END_TEST
+
+ START_TEST(test_set_url_port)
+-url_t url;
+-
+-fail_if(0 == url_set(&url, "https://ahost:200/Lost/In/Space"));
+-fail_unless(!strcmp(url.host, "ahost"));
+-fail_unless(!strcmp(url.file, "/Lost/In/Space"));
+-fail_unless(!strcmp(url.user, ""));
+-fail_unless(!strcmp(url.pass, ""));
+-fail_unless(url.proto == PROTO_HTTPS);
+-fail_unless(url.port == 200);
++{
++ url_t url;
++
++ fail_if(0 == url_set(&url, "https://ahost:200/Lost/In/Space"));
++ fail_unless(!strcmp(url.host, "ahost"));
++ fail_unless(!strcmp(url.file, "/Lost/In/Space"));
++ fail_unless(!strcmp(url.user, ""));
++ fail_unless(!strcmp(url.pass, ""));
++ fail_unless(url.proto == PROTO_HTTPS);
++ fail_unless(url.port == 200);
++}
+ END_TEST
+
+ START_TEST(test_set_url_username)
+-url_t url;
+-
+-fail_if(0 == url_set(&url, "socks4://user@ahost/Space"));
+-fail_unless(!strcmp(url.host, "ahost"));
+-fail_unless(!strcmp(url.file, "/Space"));
+-fail_unless(!strcmp(url.user, "user"));
+-fail_unless(!strcmp(url.pass, ""));
+-fail_unless(url.proto == PROTO_SOCKS4);
+-fail_unless(url.port == 1080);
++{
++ url_t url;
++
++ fail_if(0 == url_set(&url, "socks4://user@ahost/Space"));
++ fail_unless(!strcmp(url.host, "ahost"));
++ fail_unless(!strcmp(url.file, "/Space"));
++ fail_unless(!strcmp(url.user, "user"));
++ fail_unless(!strcmp(url.pass, ""));
++ fail_unless(url.proto == PROTO_SOCKS4);
++ fail_unless(url.port == 1080);
++}
+ END_TEST
+
+ START_TEST(test_set_url_username_pwd)
+-url_t url;
+-
+-fail_if(0 == url_set(&url, "socks5://user:pass@ahost/"));
+-fail_unless(!strcmp(url.host, "ahost"));
+-fail_unless(!strcmp(url.file, "/"));
+-fail_unless(!strcmp(url.user, "user"));
+-fail_unless(!strcmp(url.pass, "pass"));
+-fail_unless(url.proto == PROTO_SOCKS5);
+-fail_unless(url.port == 1080);
++{
++ url_t url;
++
++ fail_if(0 == url_set(&url, "socks5://user:pass@ahost/"));
++ fail_unless(!strcmp(url.host, "ahost"));
++ fail_unless(!strcmp(url.file, "/"));
++ fail_unless(!strcmp(url.user, "user"));
++ fail_unless(!strcmp(url.pass, "pass"));
++ fail_unless(url.proto == PROTO_SOCKS5);
++ fail_unless(url.port == 1080);
++}
+ END_TEST
+
+ struct {
+@@ -148,26 +159,30 @@ struct {
+ };
+
+ START_TEST(test_word_wrap)
+-int i;
++{
++ int i;
+
+-for (i = 0; word_wrap_tests[i].orig && *word_wrap_tests[i].orig; i++) {
+- char *wrapped = word_wrap(word_wrap_tests[i].orig, word_wrap_tests[i].line_len);
++ for (i = 0; word_wrap_tests[i].orig && *word_wrap_tests[i].orig; i++) {
++ char *wrapped = word_wrap(word_wrap_tests[i].orig, word_wrap_tests[i].line_len);
+
+- fail_unless(strcmp(word_wrap_tests[i].wrapped, wrapped) == 0,
+- "%s (line_len = %d) should wrap to `%s', not to `%s'",
+- word_wrap_tests[i].orig, word_wrap_tests[i].line_len,
+- word_wrap_tests[i].wrapped, wrapped);
++ fail_unless(strcmp(word_wrap_tests[i].wrapped, wrapped) == 0,
++ "%s (line_len = %d) should wrap to `%s', not to `%s'",
++ word_wrap_tests[i].orig, word_wrap_tests[i].line_len,
++ word_wrap_tests[i].wrapped, wrapped);
+
+- g_free(wrapped);
++ g_free(wrapped);
++ }
+ }
+ END_TEST
+
+ START_TEST(test_http_encode)
+-char s[80];
++{
++ char s[80];
+
+-strcpy(s, "ee\xc3" "\xab" "ee!!...");
+-http_encode(s);
+-fail_unless(strcmp(s, "ee%C3%ABee%21%21...") == 0);
++ strcpy(s, "ee\xc3" "\xab" "ee!!...");
++ http_encode(s);
++ fail_unless(strcmp(s, "ee%C3%ABee%21%21...") == 0);
++}
+ END_TEST
+
+ struct {
+@@ -198,19 +213,21 @@ struct {
+ };
+
+ START_TEST(test_split_command_parts)
+-int i;
+-for (i = 0; split_tests[i].command; i++) {
+- char *cmd = g_strdup(split_tests[i].command);
+- char **split = split_command_parts(cmd, split_tests[i].limit);
+- char **expected = split_tests[i].expected;
+-
+- int j;
+- for (j = 0; split[j] && expected[j]; j++) {
+- fail_unless(strcmp(split[j], expected[j]) == 0,
+- "(%d) split_command_parts broken: split(\"%s\")[%d] -> %s (expected: %s)",
+- i, split_tests[i].command, j, split[j], expected[j]);
+- }
+- g_free(cmd);
++{
++ int i;
++ for (i = 0; split_tests[i].command; i++) {
++ char *cmd = g_strdup(split_tests[i].command);
++ char **split = split_command_parts(cmd, split_tests[i].limit);
++ char **expected = split_tests[i].expected;
++
++ int j;
++ for (j = 0; split[j] && expected[j]; j++) {
++ fail_unless(strcmp(split[j], expected[j]) == 0,
++ "(%d) split_command_parts broken: split(\"%s\")[%d] -> %s (expected: %s)",
++ i, split_tests[i].command, j, split[j], expected[j]);
++ }
++ g_free(cmd);
++ }
+ }
+ END_TEST
+
+--
+2.26.2
+
diff --git a/net-im/bitlbee/files/bitlbee-3.5-libevent.patch b/net-im/bitlbee/files/bitlbee-3.5-libevent.patch
new file mode 100644
index 000000000000..5ceea2fc576a
--- /dev/null
+++ b/net-im/bitlbee/files/bitlbee-3.5-libevent.patch
@@ -0,0 +1,71 @@
+diff --git a/lib/events.h b/lib/events.h
+index 1b5b41b7..b4b6110e 100644
+--- a/lib/events.h
++++ b/lib/events.h
+@@ -69,6 +69,8 @@ G_MODULE_EXPORT void b_main_init();
+ G_MODULE_EXPORT void b_main_run();
+ G_MODULE_EXPORT void b_main_quit();
+
++G_MODULE_EXPORT void b_main_iteration();
++
+
+ /* Add event handlers (for I/O or a timeout). The event handler will be called
+ every time the event "happens", until your event handler returns FALSE (or
+diff --git a/lib/events_glib.c b/lib/events_glib.c
+index dca704e1..da73f3ae 100644
+--- a/lib/events_glib.c
++++ b/lib/events_glib.c
+@@ -64,6 +64,12 @@ void b_main_quit()
+ g_main_quit(loop);
+ }
+
++void b_main_iteration()
++{
++ g_main_iteration(FALSE);
++ event_debug("b_main_iteration()\n");
++}
++
+ static gboolean gaim_io_invoke(GIOChannel *source, GIOCondition condition, gpointer data)
+ {
+ GaimIOClosure *closure = data;
+diff --git a/lib/events_libevent.c b/lib/events_libevent.c
+index 854af010..05391afa 100644
+--- a/lib/events_libevent.c
++++ b/lib/events_libevent.c
+@@ -113,6 +113,12 @@ void b_main_quit()
+ b_main_restart();
+ }
+
++void b_main_iteration()
++{
++ event_base_loop(leh, EVLOOP_NONBLOCK);
++ event_debug("b_main_iteration()\n");
++}
++
+ static void b_event_passthrough(int fd, short event, void *data)
+ {
+ struct b_event_data *b_ev = data;
+diff --git a/tests/check_irc.c b/tests/check_irc.c
+index e2054106..db3137f3 100644
+--- a/tests/check_irc.c
++++ b/tests/check_irc.c
+@@ -5,6 +5,7 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include "irc.h"
++#include "events.h"
+ #include "testsuite.h"
+
+ START_TEST(test_connect)
+@@ -42,7 +43,7 @@ START_TEST(test_login)
+ "USER a a a a\n", -1, NULL, NULL) == G_IO_STATUS_NORMAL);
+ fail_unless(g_io_channel_flush(ch2, NULL) == G_IO_STATUS_NORMAL);
+
+- g_main_iteration(FALSE);
++ b_main_iteration();
+ irc_free(irc);
+
+ fail_unless(g_io_channel_read_to_end(ch2, &raw, NULL, NULL) == G_IO_STATUS_NORMAL);
+--
+2.26.2
+
diff --git a/net-im/bitlbee/files/bitlbee-3.5-verbose-build.patch b/net-im/bitlbee/files/bitlbee-3.5-verbose-build.patch
deleted file mode 100644
index 7501963cb5de..000000000000
--- a/net-im/bitlbee/files/bitlbee-3.5-verbose-build.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-Add a --verbose configure flag to enable verbose build output.
-
---- bitlbee-3.5/configure
-+++ bitlbee-3.5/configure
-@@ -38,6 +38,7 @@
- twitter=1
- purple=0
-
-+verbose=0
- doc=1
- debug=0
- strip=0
-@@ -125,6 +126,8 @@
- --pidfile=... $pidfile
- --config=... $config
-
-+--verbose=0/1 Disable/enable verbose build $verbose
-+
- --msn=0/1 Disable/enable MSN part $msn
- --jabber=0/1 Disable/enable Jabber part $jabber
- --oscar=0/1 Disable/enable Oscar part (ICQ, AIM) $oscar
-@@ -282,6 +285,12 @@
- debug=1
- fi
-
-+if [ "$verbose" = "0" ]; then
-+ echo 'VERBOSE=@' >> Makefile.settings
-+else
-+ echo 'VERBOSE=' >> Makefile.settings
-+fi
-+
- if [ "$debug" = "1" ]; then
- echo 'DEBUG=1' >> Makefile.settings
- CFLAGS="$CFLAGS -g3 -DDEBUG -O0"
---- bitlbee-3.5/lib/Makefile
-+++ bitlbee-3.5/lib/Makefile
-@@ -35,12 +35,12 @@
-
- lib.o: $(objects) $(subdirs)
- @echo '*' Linking lib.o
-- @$(LD) $(LFLAGS) $(objects) -o lib.o
-+ $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o lib.o
-
- $(objects): ../Makefile.settings Makefile
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- -include .depend/*.d
---- bitlbee-3.5/Makefile
-+++ bitlbee-3.5/Makefile
-@@ -162,28 +162,28 @@
- tar czf $$x.tar.gz --exclude=debian --exclude=.git* --exclude=.depend $$x
-
- $(subdirs):
-- @$(MAKE) -C $@ $(MAKECMDGOALS)
-+ $(MAKE) -C $@ $(MAKECMDGOALS)
-
- $(OTR_PI): %.so: $(_SRCDIR_)%.c
- @echo '*' Building plugin $@
-- @$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) $< -o $@ $(OTRFLAGS)
-+ $(VERBOSE) $(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) $< -o $@ $(OTRFLAGS)
-
- $(SKYPE_PI): $(_SRCDIR_)protocols/skype/skype.c
- @echo '*' Building plugin skype
-- @$(CC) $(CFLAGS) $(LDFLAGS) $(SKYPEFLAGS) $< -o $@
-+ $(VERBOSE) $(CC) $(CFLAGS) $(LDFLAGS) $(SKYPEFLAGS) $< -o $@
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- $(objects): Makefile Makefile.settings config.h
-
- $(OUTFILE): $(objects) $(subdirs)
- @echo '*' Linking $(OUTFILE)
-- @$(CC) $(objects) $(subdirobjs) -o $(OUTFILE) $(LDFLAGS_BITLBEE) $(LDFLAGS) $(EFLAGS)
-+ $(VERBOSE) $(CC) $(objects) $(subdirobjs) -o $(OUTFILE) $(LDFLAGS_BITLBEE) $(LDFLAGS) $(EFLAGS)
- ifneq ($(firstword $(STRIP)), \#)
- @echo '*' Stripping $(OUTFILE)
-- @-$(STRIP) $(OUTFILE)
-+ $(VERBOSE) -$(STRIP) $(OUTFILE)
- endif
-
- ctags:
---- bitlbee-3.5/protocols/jabber/Makefile
-+++ bitlbee-3.5/protocols/jabber/Makefile
-@@ -37,10 +37,10 @@
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- jabber_mod.o: $(objects)
- @echo '*' Linking jabber_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o jabber_mod.o
-+ $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o jabber_mod.o
-
- -include .depend/*.d
---- bitlbee-3.5/protocols/Makefile
-+++ bitlbee-3.5/protocols/Makefile
-@@ -42,18 +42,18 @@
- rm -rf .depend
-
- $(subdirs):
-- @$(MAKE) -C $@ $(MAKECMDGOALS)
-+ $(MAKE) -C $@ $(MAKECMDGOALS)
-
- ### MAIN PROGRAM
-
- protocols.o: $(objects) $(subdirs)
- @echo '*' Linking protocols.o
-- @$(LD) $(LFLAGS) $(objects) $(subdirobjs) -o protocols.o
-+ $(VERBOSE) $(LD) $(LFLAGS) $(objects) $(subdirobjs) -o protocols.o
-
- $(objects): ../Makefile.settings Makefile
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- -include .depend/*.d
---- bitlbee-3.5/protocols/msn/Makefile
-+++ bitlbee-3.5/protocols/msn/Makefile
-@@ -37,10 +37,10 @@
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- msn_mod.o: $(objects)
- @echo '*' Linking msn_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o msn_mod.o
-+ $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o msn_mod.o
-
- -include .depend/*.d
---- bitlbee-3.5/protocols/oscar/Makefile
-+++ bitlbee-3.5/protocols/oscar/Makefile
-@@ -38,10 +38,10 @@
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- oscar_mod.o: $(objects)
- @echo '*' Linking oscar_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o oscar_mod.o
-+ $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o oscar_mod.o
-
- -include .depend/*.d
---- bitlbee-3.5/protocols/purple/Makefile
-+++ bitlbee-3.5/protocols/purple/Makefile
-@@ -38,10 +38,10 @@
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- purple_mod.o: $(objects)
- @echo '*' Linking purple_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o purple_mod.o
-+ $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o purple_mod.o
-
- -include .depend/*.d
---- bitlbee-3.5/protocols/twitter/Makefile
-+++ bitlbee-3.5/protocols/twitter/Makefile
-@@ -37,10 +37,10 @@
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- twitter_mod.o: $(objects)
- @echo '*' Linking twitter_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o twitter_mod.o
-+ $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o twitter_mod.o
-
- -include .depend/*.d
---- bitlbee-3.5/tests/Makefile
-+++ bitlbee-3.5/tests/Makefile
-@@ -20,8 +20,8 @@
-
- check: $(test_objs) $(addprefix ../, $(main_objs)) ../protocols/protocols.o ../lib/lib.o
- @echo '*' Linking $@
-- @$(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(EFLAGS)
-+ $(VERBOSE) $(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(EFLAGS)
-
- %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $< -o $@
-+ $(VERBOSE) $(CC) -c $(CFLAGS) $< -o $@
diff --git a/net-im/bitlbee/files/bitlbee-3.6-disabled-plugins-use.patch b/net-im/bitlbee/files/bitlbee-3.6-disabled-plugins-use.patch
new file mode 100644
index 000000000000..0973bd4bd5fa
--- /dev/null
+++ b/net-im/bitlbee/files/bitlbee-3.6-disabled-plugins-use.patch
@@ -0,0 +1,55 @@
+This patch is taken from upstrem https://github.com/bitlbee/bitlbee/pull/156
+where it was already merged.
+
+From a8196d6f72b44be9c315b9ad7dc45276d2aaca0c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20Van=C4=9Bk?= <arkamar@atlas.cz>
+Date: Tue, 23 Mar 2021 13:07:18 +0100
+Subject: [PATCH] root_commands: prevent linker error when plugins are disabled
+
+This commit fixes compilation issue with disabled plugin support
+(./configure --plugins=0), where get_plugins function is unavailable.
+The problem has been introduced with addition of new 'plugins info'
+subcommand, where get_plugins is used in cmd_plugins_info function,
+which should be conditionally available only if WITH_PLUGINS is defined.
+
+Bug: https://bugs.gentoo.org/739510
+Bug: https://bugs.gentoo.org/617604
+Fixes: 6908ab747d1e ("Add 'plugins info' subcommand, only show plugin details there")
+Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
+---
+ root_commands.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/root_commands.c b/root_commands.c
+index 8358c030..a4e72f83 100644
+--- a/root_commands.c
++++ b/root_commands.c
+@@ -1168,6 +1168,7 @@ static void prplstr(GList *prpls, GString *gstr)
+ g_list_free(prpls);
+ }
+
++#ifdef WITH_PLUGINS
+ static void cmd_plugins_info(irc_t *irc, char **cmd)
+ {
+ GList *l;
+@@ -1201,6 +1202,7 @@ static void cmd_plugins_info(irc_t *irc, char **cmd)
+ irc_rootmsg(irc, " URL: %s", info->url);
+ }
+ }
++#endif
+
+ static void cmd_plugins(irc_t *irc, char **cmd)
+ {
+@@ -1208,7 +1210,9 @@ static void cmd_plugins(irc_t *irc, char **cmd)
+ GString *gstr;
+
+ if (cmd[1] && g_strcasecmp(cmd[1], "info") == 0) {
++#ifdef WITH_PLUGINS
+ cmd_plugins_info(irc, cmd);
++#endif
+ return;
+ }
+
+--
+2.26.3
+
diff --git a/net-im/bitlbee/files/bitlbee-3.6-system-json-parser.patch b/net-im/bitlbee/files/bitlbee-3.6-system-json-parser.patch
new file mode 100644
index 000000000000..0a9c197d763d
--- /dev/null
+++ b/net-im/bitlbee/files/bitlbee-3.6-system-json-parser.patch
@@ -0,0 +1,99 @@
+This is adapted patch from upstream PR 151. Original PR defines
+--external-json-parser which breaks configuration, see [1]. It was changed to
+--externaljsonparser and $external_json_parser to $externaljsonparser.
+Additionally, LDFLAGS_CHECK variable was introduced in order to make
+tests working, see [2] and #865667.
+
+[1] https://github.com/bitlbee/bitlbee/pull/151#issuecomment-1201181905
+[2] https://github.com/bitlbee/bitlbee/pull/151#issuecomment-1219254239
+
+Upstream-PR: https://github.com/bitlbee/bitlbee/pull/151
+
+diff --git a/configure b/configure
+index fd8d363a..39495515 100755
+--- a/configure
++++ b/configure
+@@ -47,6 +47,7 @@ plugins=1
+ otr=0
+
+ events=glib
++externaljsonparser=auto
+ ssl=auto
+
+ pam=0
+@@ -148,6 +149,7 @@ Option Description Default
+ --events=... Event handler (glib, libevent) $events
+ --ssl=... SSL library to use (gnutls, nss, openssl, auto)
+ $ssl
++--externaljsonparser=0/1/auto Use External JSON parser $externaljsonparser
+
+
+ --target=... Cross compilation target same as host
+@@ -398,6 +400,21 @@ else
+ fi
+ echo 'EVENT_HANDLER=events_'$events'.o' >> Makefile.settings
+
++if [ "$externaljsonparser" = "auto" ]; then
++ if pkg-config --exists json-parser; then
++ externaljsonparser=1
++ else
++ externaljsonparser=0
++ fi
++fi
++echo "EXTERNAL_JSON_PARSER=$externaljsonparser" >> Makefile.settings
++if [ "$externaljsonparser" = "1" ]; then
++ echo "CFLAGS+=$(pkg-config --cflags json-parser)" >> Makefile.settings
++ echo "LDFLAGS_BITLBEE+=$(pkg-config --libs json-parser)" >> Makefile.settings
++ echo "LDFLAGS_CHECK+=$(pkg-config --libs json-parser)" >> Makefile.settings
++fi
++
++
+ detect_gnutls()
+ {
+ if $PKG_CONFIG --exists gnutls; then
+@@ -979,6 +996,12 @@ else
+ echo ' systemd disabled.'
+ fi
+
++if [ "$externaljsonparser" = "1" ]; then
++ echo ' Using system JSON parser.'
++else
++ echo ' Using bundled JSON parser.'
++fi
++
+ echo ' Using event handler: '$events
+ echo ' Using SSL library: '$ssl
+ #echo ' Building with these storage backends: '$STORAGES
+diff --git a/lib/Makefile b/lib/Makefile
+index fc46aedc..ad95d9cb 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -12,7 +12,11 @@ _SRCDIR_ := $(_SRCDIR_)lib/
+ endif
+
+ # [SH] Program variables
+-objects = arc.o base64.o canohost.o $(EVENT_HANDLER) ftutil.o http_client.o ini.o json.o json_util.o md5.o misc.o oauth.o oauth2.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o ns_parse.o
++objects = arc.o base64.o canohost.o $(EVENT_HANDLER) ftutil.o http_client.o ini.o json_util.o md5.o misc.o oauth.o oauth2.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o ns_parse.o
++
++ifneq ($(EXTERNAL_JSON_PARSER),1)
++objects += json.o
++endif
+
+ LFLAGS += -r
+
+diff --git a/tests/Makefile b/tests/Makefile
+index 76122a2f..2235bf1d 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -20,7 +20,7 @@ test_objs = check.o check_util.o check_nick.o check_md5.o check_arc.o check_irc.
+
+ check: $(test_objs) $(addprefix ../, $(main_objs)) ../protocols/protocols.o ../lib/lib.o
+ @echo '*' Linking $@
+- $(VERBOSE) $(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(EFLAGS)
++ $(VERBOSE) $(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(LDFLAGS_CHECK) $(EFLAGS)
+
+ %.o: $(_SRCDIR_)%.c
+ @echo '*' Compiling $<
+--
+2.35.1
+
diff --git a/net-im/bitlbee/files/bitlbee.confd-r1 b/net-im/bitlbee/files/bitlbee.confd-r1
deleted file mode 100644
index d581222f9fb9..000000000000
--- a/net-im/bitlbee/files/bitlbee.confd-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-# Bitlbee options (see /usr/sbin/bitlbee -h)
-BITLBEE_OPTS="-F"
-
-# By default, the bitlbee init script will attempt to stop
-# all bitlbee-owned processes, including per-client forks.
-# Setting this to "no" tells the init script to only
-# stop the main bitlbee process.
-BITLBEE_STOP_ALL="yes"
diff --git a/net-im/bitlbee/files/bitlbee.initd-r1 b/net-im/bitlbee/files/bitlbee.initd-r1
deleted file mode 100644
index 413bd45735ed..000000000000
--- a/net-im/bitlbee/files/bitlbee.initd-r1
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or
-# later
-
-DAEMON=/usr/sbin/bitlbee
-PIDFILE=/var/run/bitlbee/bitlbee.pid
-
-depend() {
- need logger net
-}
-
-start () {
- ebegin "Starting bitlbee"
- checkpath -d -m 0755 -o bitlbee:bitlbee $(dirname ${PIDFILE})
- start-stop-daemon --start --quiet \
- -u bitlbee:bitlbee --exec ${DAEMON} --pidfile ${PIDFILE} \
- -- -P ${PIDFILE} ${BITLBEE_OPTS}
- eend $?
-}
-
-stop() {
- ebegin "Stopping bitlbee"
- local pidfile=
- yesno ${BITLBEE_STOP_ALL:-YES} ||
- pidfile="--pidfile ${PIDFILE}"
- start-stop-daemon --stop --quiet ${pidfile} -u bitlbee:bitlbee
- eend $?
-}
-
diff --git a/net-im/bitlbee/files/bitlbee.initd-r2 b/net-im/bitlbee/files/bitlbee.initd-r2
index 0b3b1a4911bc..0107909aed6c 100644
--- a/net-im/bitlbee/files/bitlbee.initd-r2
+++ b/net-im/bitlbee/files/bitlbee.initd-r2
@@ -1,5 +1,5 @@
#!/sbin/openrc-run
-# Copyright 1999-2019 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
command="/usr/sbin/bitlbee"