# HG changeset patch # User Mikael Berthe # Date 1146760765 -7200 # Node ID 7c74eef1d0e03ade7f93edd00237df0adc900b1c # Parent cd011fe9f8a5d19488c015c4b707f15d156e5812 New option "muc_auto_whois" diff -r cd011fe9f8a5 -r 7c74eef1d0e0 mcabber/mcabberrc.example --- a/mcabber/mcabberrc.example Thu May 04 17:54:06 2006 +0200 +++ b/mcabber/mcabberrc.example Thu May 04 18:39:25 2006 +0200 @@ -132,6 +132,11 @@ # won't be deleted. #set delete_on_reject = 0 +# MUC +# Set 'muc_auto_whois' to 1 if you want to call /room whois each time +# somebody joins a room. (default: 0) +#set muc_auto_whois = 0 + # Status messages # The "message" value will override all others, take care! #set message = Unique message status diff -r cd011fe9f8a5 -r 7c74eef1d0e0 mcabber/src/commands.c --- a/mcabber/src/commands.c Thu May 04 17:54:06 2006 +0200 +++ b/mcabber/src/commands.c Thu May 04 18:39:25 2006 +0200 @@ -1768,7 +1768,7 @@ jb_room_unlock(buddy_getjid(bud)); } -static void room_whois(gpointer bud, char *arg) +void room_whois(gpointer bud, char *arg) { char **paramlst; gchar *nick, *buffer; diff -r cd011fe9f8a5 -r 7c74eef1d0e0 mcabber/src/commands.h --- a/mcabber/src/commands.h Thu May 04 17:54:06 2006 +0200 +++ b/mcabber/src/commands.h Thu May 04 18:39:25 2006 +0200 @@ -20,6 +20,8 @@ extern char *mcabber_version(void); extern void mcabber_connect(void); +void room_whois(gpointer bud, char *nick_locale); + #endif /* __COMMANDS_H__ */ /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */ diff -r cd011fe9f8a5 -r 7c74eef1d0e0 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Thu May 04 17:54:06 2006 +0200 +++ b/mcabber/src/jabglue.c Thu May 04 18:39:25 2006 +0200 @@ -32,6 +32,7 @@ #include "settings.h" #include "hbuf.h" #include "histolog.h" +#include "commands.h" #define JABBERPORT 5222 #define JABBERSSLPORT 5223 @@ -972,6 +973,7 @@ enum imaffiliation mbaffil = affil_none; const char *mbjid = NULL, *mbnick = NULL; const char *actorjid = NULL, *reason = NULL; + bool new_member = FALSE; // True if somebody else joins the room (not us) unsigned int statuscode = 0; GSList *room_elt; int log_muc_conf; @@ -1165,11 +1167,13 @@ if (log_muc_conf) hlog_write_message(roomjid, 0, FALSE, mbuf); g_free(mbuf); mbuf = g_strdup_printf("%s has joined", rname); + new_member = TRUE; } } else { - if (strcmp(ournick, rname)) + if (strcmp(ournick, rname)) { mbuf = g_strdup_printf("%s has joined", rname); - else + new_member = TRUE; + } else mbuf = NULL; } @@ -1185,6 +1189,12 @@ if (rname) { roster_setstatus(roomjid, rname, bpprio, ust, ustmsg, usttime, mbrole, mbaffil, mbjid); + if (new_member && settings_opt_get_int("muc_auto_whois")) { + // FIXME: This will fail for some UTF-8 nicknames. + gchar *joiner_nick = from_utf8(rname); + room_whois(room_elt->data, joiner_nick); + g_free(joiner_nick); + } } else scr_LogPrint(LPRINT_LOGNORM, "MUC DBG: no rname!"); /* DBG */