# HG changeset patch # User Mikael Berthe # Date 1131990428 -3600 # Node ID 5c338d31de5648879164588613c8a70a5b5515dd # Parent 9480a76471b69b17bc178f1ce6ccdf72a86b6ded Show current global status message in "/status" diff -r 9480a76471b6 -r 5c338d31de56 mcabber/src/commands.c --- a/mcabber/src/commands.c Mon Nov 14 18:34:57 2005 +0100 +++ b/mcabber/src/commands.c Mon Nov 14 18:47:08 2005 +0100 @@ -452,8 +452,10 @@ static void do_status(char *arg) { if (!arg || (!*arg)) { - scr_LogPrint(LPRINT_NORMAL, "Your status is: %c", - imstatus2char[jb_getstatus()]); + const char *sm = jb_getstatusmsg(); + scr_LogPrint(LPRINT_NORMAL, "Your status is: [%c] %s", + imstatus2char[jb_getstatus()], + (sm ? sm : "")); return; } setstatus(NULL, arg); diff -r 9480a76471b6 -r 5c338d31de56 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Mon Nov 14 18:34:57 2005 +0100 +++ b/mcabber/src/jabglue.c Mon Nov 14 18:47:08 2005 +0100 @@ -44,6 +44,7 @@ static int s_id; static int regmode, regdone; static enum imstatus mystatus = offline; +static gchar *mystatusmsg; static unsigned char online; char imstatus2char[imstatus_size+1] = { @@ -263,6 +264,11 @@ return mystatus; } +inline const char *jb_getstatusmsg() +{ + return mystatusmsg; +} + void jb_setstatus(enum imstatus st, const char *recipient, const char *msg) { xmlnode x; @@ -339,6 +345,9 @@ hk_mystatuschange(0, mystatus, st, msg); mystatus = st; + if (mystatusmsg) g_free(mystatusmsg); + if (msg) mystatusmsg = g_strdup(msg); + else mystatusmsg = NULL; } void jb_send_msg(const char *jid, const char *text, int type, @@ -798,6 +807,10 @@ online = FALSE; mystatus = offline; + if (mystatusmsg) { + g_free(mystatusmsg); + mystatusmsg = NULL; + } roster_free(); update_roster = TRUE; break; diff -r 9480a76471b6 -r 5c338d31de56 mcabber/src/jabglue.h --- a/mcabber/src/jabglue.h Mon Nov 14 18:34:57 2005 +0100 +++ b/mcabber/src/jabglue.h Mon Nov 14 18:47:08 2005 +0100 @@ -47,6 +47,7 @@ void jb_delbuddy(const char *jid); void jb_updatebuddy(const char *jid, const char *name, const char *group); inline enum imstatus jb_getstatus(); +inline const char *jb_getstatusmsg(); void jb_setstatus(enum imstatus st, const char *recipient, const char *msg); void jb_send_msg(const char *jid, const char *text, int type, const char *subject);