diff options
-rw-r--r-- | protocols/jabber/jabber.c | 20 | ||||
-rw-r--r-- | protocols/jabber/message.c | 25 |
2 files changed, 41 insertions, 4 deletions
diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c index cc7bac3d..84d7e366 100644 --- a/protocols/jabber/jabber.c +++ b/protocols/jabber/jabber.c @@ -111,6 +111,22 @@ static int jabber_send_im( struct gaim_connection *gc, char *who, char *message, return 0; } +static GList *jabber_away_states( struct gaim_connection *gc ) +{ + GList *l = NULL; + + l = g_list_append( l, (void*) "Online" ); + l = g_list_append( l, (void*) "Away" ); + l = g_list_append( l, (void*) "Extended Away" ); + l = g_list_append( l, (void*) "Do Not Disturb" ); + + return( l ); +} + +static void jabber_set_away( struct gaim_connection *gc, char *state, char *message ) +{ +} + void jabber_init() { struct prpl *ret = g_new0(struct prpl, 1); @@ -120,9 +136,9 @@ void jabber_init() ret->acc_init = jabber_acc_init; ret->close = jabber_close; ret->send_im = jabber_send_im; -// ret->away_states = jabber_away_states; + ret->away_states = jabber_away_states; // ret->get_status_string = jabber_get_status_string; -// ret->set_away = jabber_set_away; + ret->set_away = jabber_set_away; // ret->set_info = jabber_set_info; // ret->get_info = jabber_get_info; // ret->add_buddy = jabber_add_buddy; diff --git a/protocols/jabber/message.c b/protocols/jabber/message.c index e5f75464..b41522fd 100644 --- a/protocols/jabber/message.c +++ b/protocols/jabber/message.c @@ -25,11 +25,32 @@ xt_status jabber_pkt_message( struct xt_node *node, gpointer data ) { + struct gaim_connection *gc = data; char *from = xt_find_attr( node, "from" ); + char *type = xt_find_attr( node, "type" ); struct xt_node *msg = xt_find_node( node->children, "body" ); - printf( "Received MSG from %s: %s\n", from, msg ? msg->text : "<null>" ); - xt_print( node ); + if( !type || !msg ) + return XT_HANDLED; /* Grmbl... FIXME */ + + if( strcmp( type, "chat" ) == 0 ) + { + char *s; + + s = strchr( from, '/' ); + if( s ) + *s = 0; + + serv_got_im( gc, from, msg->text, 0, 0, 0 ); + + if( s ) + *s = '/'; + } + else + { + printf( "Received MSG from %s: %s\n", from, msg ? msg->text : "<null>" ); + xt_print( node ); + } return XT_HANDLED; } |