From: Pekka Riikonen Date: Sat, 22 Jun 2002 09:42:16 +0000 (+0000) Subject: Merged some fixes from c0ffee's silc-plugin. X-Git-Tag: silc.client.0.9.3~10 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=cca2d6a8dcd8cf497b5892fda14f408cfde38c13;p=silc.git Merged some fixes from c0ffee's silc-plugin. --- diff --git a/apps/irssi/src/silc/core/silc-channels.c b/apps/irssi/src/silc/core/silc-channels.c index afff90e6..f5b3bbaf 100644 --- a/apps/irssi/src/silc/core/silc-channels.c +++ b/apps/irssi/src/silc/core/silc-channels.c @@ -383,8 +383,10 @@ static void command_away(const char *data, SILC_SERVER_REC *server, } server->usermode_away = set; + g_free_and_null(server->away_reason); if (set) server->away_reason = g_strdup((char *)data); + signal_emit("away mode changed", 1, server); silc_command_exec(server, "UMODE", set ? "+g" : "-g"); diff --git a/apps/irssi/src/silc/core/silc-expandos.c b/apps/irssi/src/silc/core/silc-expandos.c index cecdfab1..cecf0138 100644 --- a/apps/irssi/src/silc/core/silc-expandos.c +++ b/apps/irssi/src/silc/core/silc-expandos.c @@ -30,6 +30,10 @@ #include "silc-queries.h" #include "silc-nicklist.h" +EXPANDO_FUNC old_expando_usermode, + old_expando_cumode, + old_expando_cumode_space; + /* User mode in active server */ static char *expando_usermode(SERVER_REC *server, void *item, int *free_ret) @@ -38,8 +42,12 @@ static char *expando_usermode(SERVER_REC *server, void *item, int *free_ret) static char modes[128], stat[128]; bool se; - if (!s) - return ""; + if (!s) { + if (old_expando_usermode) + return old_expando_usermode(server, item, free_ret); + else + return ""; + } memset(modes, 0, sizeof(modes)); memset(stat, 0, sizeof(stat)); @@ -78,6 +86,15 @@ static char *expando_usermode(SERVER_REC *server, void *item, int *free_ret) static char *expando_cumode(SERVER_REC *server, void *item, int *free_ret) { + SILC_SERVER_REC *s = SILC_SERVER(server); + + if (!s) { + if (old_expando_cumode) + return old_expando_cumode(server, item, free_ret); + else + return ""; + } + if (IS_SILC_CHANNEL(item) && CHANNEL(item)->ownnick) { SILC_NICK_REC *nick = (SILC_NICK_REC *)CHANNEL(item)->ownnick; return (nick->op && nick->founder) ? "*@" : @@ -90,17 +107,31 @@ static char *expando_cumode(SERVER_REC *server, void *item, int *free_ret) static char *expando_cumode_space(SERVER_REC *server, void *item, int *free_ret) { + SILC_SERVER_REC *s = SILC_SERVER(server); char *ret; - if (!IS_SILC_SERVER(server)) - return ""; + if (!s) { + if (old_expando_cumode_space) + return old_expando_cumode_space(server, item, free_ret); + else + return ""; + } ret = expando_cumode(server, item, free_ret); return *ret == '\0' ? " " : ret; } +static char *expando_silc_version(SERVER_REC *server, void *item, + int *free_ret) +{ + return ""; +} + void silc_expandos_init(void) { + old_expando_usermode = expando_find_long("usermode"); + old_expando_cumode = expando_find_long("cumode"); + old_expando_cumode_space = expando_find_long("cumode_space"); expando_create("usermode", expando_usermode, "window changed", EXPANDO_ARG_NONE, "window server changed", EXPANDO_ARG_WINDOW, @@ -120,4 +151,10 @@ void silc_expandos_deinit(void) expando_destroy("usermode", expando_usermode); expando_destroy("cumode", expando_cumode); expando_destroy("cumode_space", expando_cumode_space); + if (old_expando_usermode) + expando_create("usermode", old_expando_usermode, NULL); + if (old_expando_cumode) + expando_create("cumode", old_expando_cumode, NULL); + if (old_expando_cumode_space) + expando_create("cumode_space", old_expando_cumode_space, NULL); }