aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber/jabber_util.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2006-09-23 18:18:24 +0200
committerWilmer van der Gaast <wilmer@gaast.net>2006-09-23 18:18:24 +0200
commit5e202b09f2cd9faff5f316ae6804facb5342eace (patch)
treed2531aa515457d66b303cbcb94ea5d7243fcb041 /protocols/jabber/jabber_util.c
parentd8e04849607d4a5ca590752dce37954f12179580 (diff)
Implemented a list of away states, using this for a better set_away(), and
got rid of the double <presence> tag sent because of presence_announce().
Diffstat (limited to 'protocols/jabber/jabber_util.c')
-rw-r--r--protocols/jabber/jabber_util.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/protocols/jabber/jabber_util.c b/protocols/jabber/jabber_util.c
index 88b9e55d..21df5126 100644
--- a/protocols/jabber/jabber_util.c
+++ b/protocols/jabber/jabber_util.c
@@ -91,3 +91,35 @@ struct xt_node *jabber_packet_from_cache( struct gaim_connection *gc, char *id )
return node;
}
+
+const struct jabber_away_state jabber_away_state_list[] =
+{
+ { "away", "Away" },
+ { "chat", "Free for Chat" },
+ { "dnd", "Do not Disturb" },
+ { "xa", "Extended Away" },
+ { "", "Online" },
+ { "", NULL }
+};
+
+const struct jabber_away_state *jabber_away_state_by_code( char *code )
+{
+ int i;
+
+ for( i = 0; jabber_away_state_list[i].full_name; i ++ )
+ if( g_strcasecmp( jabber_away_state_list[i].code, code ) == 0 )
+ return jabber_away_state_list + i;
+
+ return NULL;
+}
+
+const struct jabber_away_state *jabber_away_state_by_name( char *name )
+{
+ int i;
+
+ for( i = 0; jabber_away_state_list[i].full_name; i ++ )
+ if( g_strcasecmp( jabber_away_state_list[i].full_name, name ) == 0 )
+ return jabber_away_state_list + i;
+
+ return NULL;
+}