libpurple/protocols/jabber/usermood.c

branch
soc.2007.xmpp
changeset 17781
d11010274b7a
parent 17780
749862fd4a87
child 17782
83af68644d0a
--- a/libpurple/protocols/jabber/usermood.c	Tue Jun 12 03:19:42 2007 +0000
+++ b/libpurple/protocols/jabber/usermood.c	Tue Jun 12 23:43:06 2007 +0000
@@ -21,12 +21,11 @@
 
 #include "usermood.h"
 #include "pep.h"
-
+#include <assert.h>
 #include <string.h>
 #include "internal.h"
 
 static char *moodstrings[] = {
-	"unknown",
 	"afraid",
 	"amazed",
 	"angry",
@@ -94,7 +93,7 @@
 static void jabber_mood_cb(JabberStream *js, const char *from, xmlnode *items) {
 	/* it doesn't make sense to have more than one item here, so let's just pick the first one */
 	xmlnode *item = xmlnode_get_child(items, "item");
-	JabberMood newmood = UNKNOWN;
+	char *newmood;
 	char *moodtext = NULL;
 	JabberBuddy *buddy = jabber_buddy_find(js, from, FALSE);
 	xmlnode *moodinfo, *mood;
@@ -112,22 +111,23 @@
 					moodtext = xmlnode_get_data(moodinfo);
 			} else {
 				int i;
-				for (i = 1; moodstrings[i]; ++i) {
+				for (i = 0; moodstrings[i]; ++i) {
+					/* verify that the mood is known (valid) */
 					if (!strcmp(moodinfo->name, moodstrings[i])) {
-						newmood = (JabberMood)i;
+						newmood = moodstrings[i];
 						break;
 					}
 				}
 			}
-			if (newmood != UNKNOWN && moodtext != NULL)
+			if (newmood != NULL && moodtext != NULL)
 			   break;
 		}
 	}
-	if (newmood != UNKNOWN) {
+	if (newmood != NULL) {
 		JabberBuddyResource *resource = jabber_buddy_find_resource(buddy, NULL);
 		const char *status_id = jabber_buddy_state_get_status_id(resource->state);
 		
-		purple_prpl_got_user_status(js->gc->account, from, status_id, "mood", _(moodstrings[newmood]), "moodtext", moodtext?moodtext:"", NULL);
+		purple_prpl_got_user_status(js->gc->account, from, status_id, "mood", _(newmood), "moodtext", moodtext?moodtext:"", NULL);
 	}
 	if (moodtext)
 		g_free(moodtext);
@@ -138,16 +138,16 @@
 	jabber_pep_register_handler("moodn", "http://jabber.org/protocol/mood", jabber_mood_cb);
 }
 
-void jabber_set_mood(JabberStream *js, JabberMood mood, const char *text) {
+void jabber_set_mood(JabberStream *js, const char *mood, const char *text) {
 	xmlnode *publish, *moodnode;
-	if (mood == UNKNOWN)
-		return;
+	
+	assert(mood != NULL);
 	
 	publish = xmlnode_new("publish");
 	xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/mood");
 	moodnode = xmlnode_new_child(xmlnode_new_child(publish, "item"), "mood");
 	xmlnode_set_namespace(moodnode, "http://jabber.org/protocol/mood");
-	xmlnode_new_child(moodnode, moodstrings[mood]);
+	xmlnode_new_child(moodnode, mood);
 
 	if (text) {
 		xmlnode *textnode = xmlnode_new_child(moodnode, "text");

mercurial