--- 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);
--- 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;
--- 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);