changeset 519:5c338d31de56

Show current global status message in "/status"
author Mikael Berthe <mikael@lilotux.net>
date Mon, 14 Nov 2005 18:47:08 +0100
parents 9480a76471b6
children c60175268eb5
files mcabber/src/commands.c mcabber/src/jabglue.c mcabber/src/jabglue.h
diffstat 3 files changed, 18 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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);