From ca2bc7dc3a846569863335ca44f481806e209a8e Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Tue, 28 May 2002 17:05:29 +0000 Subject: [PATCH] updates. --- CHANGES | 5 ++++ apps/irssi/src/silc/core/client_ops.c | 4 +++ apps/irssi/src/silc/core/silc-expandos.c | 35 ++++++++++++++++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 3f38c5ed..e0c7eae7 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,8 @@ +Tue May 28 20:11:41 EEST 2002 Pekka Riikonen + + * Display the user mode on the status bar. Affected file + irssi/src/silc/core/silc-expandos.c. + Tue May 28 13:56:26 CEST 2002 Pekka Riikonen * If private message key is not set, but the flag is set in diff --git a/apps/irssi/src/silc/core/client_ops.c b/apps/irssi/src/silc/core/client_ops.c index 1dc96687..4a5e1583 100644 --- a/apps/irssi/src/silc/core/client_ops.c +++ b/apps/irssi/src/silc/core/client_ops.c @@ -75,6 +75,10 @@ static void silc_get_umode_string(SilcUInt32 mode, char *buf, strcat(buf, " [blocks private messages]"); if (mode & SILC_UMODE_DETACHED) strcat(buf, " [detached]"); + if (mode & SILC_UMODE_REJECT_WATCHING) + strcat(buf, " [rejects watching]"); + if (mode & SILC_UMODE_BLOCK_INVITE) + strcat(buf, " [blocks invites]"); } void silc_say(SilcClient client, SilcClientConnection conn, diff --git a/apps/irssi/src/silc/core/silc-expandos.c b/apps/irssi/src/silc/core/silc-expandos.c index d29a31d4..cecdfab1 100644 --- a/apps/irssi/src/silc/core/silc-expandos.c +++ b/apps/irssi/src/silc/core/silc-expandos.c @@ -35,12 +35,43 @@ static char *expando_usermode(SERVER_REC *server, void *item, int *free_ret) { SILC_SERVER_REC *s = SILC_SERVER(server); + static char modes[128], stat[128]; + bool se; if (!s) return ""; - return (s->umode & SILC_UMODE_SERVER_OPERATOR) ? "Server Operator" : - (s->umode & SILC_UMODE_ROUTER_OPERATOR) ? "Router Operator" : ""; + memset(modes, 0, sizeof(modes)); + memset(stat, 0, sizeof(stat)); + + if (s->umode & SILC_UMODE_GONE) + strcat(stat, "g"); + if (s->umode & SILC_UMODE_INDISPOSED) + strcat(stat, "i"); + if (s->umode & SILC_UMODE_BUSY) + strcat(stat, "b"); + if (s->umode & SILC_UMODE_PAGE) + strcat(stat, "p"); + if (s->umode & SILC_UMODE_HYPER) + strcat(stat, "h"); + if (s->umode & SILC_UMODE_ROBOT) + strcat(stat, "t"); + if (s->umode & SILC_UMODE_ANONYMOUS) + strcat(stat, "?"); + if (s->umode & SILC_UMODE_BLOCK_PRIVMSG) + strcat(stat, "P"); + if (s->umode & SILC_UMODE_REJECT_WATCHING) + strcat(stat, "w"); + if (s->umode & SILC_UMODE_BLOCK_INVITE) + strcat(stat, "I"); + + se = strlen(stat) > 0; + snprintf(modes, sizeof(modes) - 1, "%s%s%s%s", + ((s->umode & SILC_UMODE_SERVER_OPERATOR) ? "Server Operator" : + (s->umode & SILC_UMODE_ROUTER_OPERATOR) ? "Router Operator" : ""), + se ? "[" : "", se ? stat : "", se ? "]" : ""); + + return modes; } /* Expands to your usermode on channel */ -- 2.24.0