diff options
| author | Indent <please@skip.me> | 2015-02-19 02:47:20 -0300 | 
|---|---|---|
| committer | dequis <dx@dxzone.com.ar> | 2015-02-20 19:50:54 -0300 | 
| commit | 5ebff60479fc7a9f7f50ac03b124c91d4e6ebe11 (patch) | |
| tree | 9fc0d50cb1f4bc9768d9f00de94eafd876bb55b0 /protocols/jabber/presence.c | |
| parent | af359b4316f9d392c6b752495a1b2ed631576ed8 (diff) | |
Reindent everything to K&R style with tabs
Used uncrustify, with the configuration file in ./doc/uncrustify.cfg
Commit author set to "Indent <please@skip.me>" so that it's easier to
skip while doing git blame.
Diffstat (limited to 'protocols/jabber/presence.c')
| -rw-r--r-- | protocols/jabber/presence.c | 251 | 
1 files changed, 117 insertions, 134 deletions
diff --git a/protocols/jabber/presence.c b/protocols/jabber/presence.c index 2875d23e..82ea5f8f 100644 --- a/protocols/jabber/presence.c +++ b/protocols/jabber/presence.c @@ -23,236 +23,219 @@  #include "jabber.h" -xt_status jabber_pkt_presence( struct xt_node *node, gpointer data ) +xt_status jabber_pkt_presence(struct xt_node *node, gpointer data)  {  	struct im_connection *ic = data; -	char *from = xt_find_attr( node, "from" ); -	char *type = xt_find_attr( node, "type" );	/* NULL should mean the person is online. */ +	char *from = xt_find_attr(node, "from"); +	char *type = xt_find_attr(node, "type");        /* NULL should mean the person is online. */  	struct xt_node *c, *cap;  	struct jabber_buddy *bud, *send_presence = NULL;  	int is_chat = 0;  	char *s; -	 -	if( !from ) + +	if (!from) {  		return XT_HANDLED; -	 -	if( ( s = strchr( from, '/' ) ) ) -	{ +	} + +	if ((s = strchr(from, '/'))) {  		*s = 0; -		if( jabber_chat_by_jid( ic, from ) ) +		if (jabber_chat_by_jid(ic, from)) {  			is_chat = 1; +		}  		*s = '/';  	} -	 -	if( type == NULL ) -	{ -		if( !( bud = jabber_buddy_by_jid( ic, from, GET_BUDDY_EXACT | GET_BUDDY_CREAT ) ) ) -		{ + +	if (type == NULL) { +		if (!(bud = jabber_buddy_by_jid(ic, from, GET_BUDDY_EXACT | GET_BUDDY_CREAT))) {  			/*  			imcb_log( ic, "Warning: Could not handle presence information from JID: %s", from );  			*/  			return XT_HANDLED;  		} -		 -		g_free( bud->away_message ); -		if( ( c = xt_find_node( node->children, "status" ) ) && c->text_len > 0 ) -			bud->away_message = g_strdup( c->text ); -		else + +		g_free(bud->away_message); +		if ((c = xt_find_node(node->children, "status")) && c->text_len > 0) { +			bud->away_message = g_strdup(c->text); +		} else {  			bud->away_message = NULL; -		 -		if( ( c = xt_find_node( node->children, "show" ) ) && c->text_len > 0 ) -		{ -			bud->away_state = (void*) jabber_away_state_by_code( c->text );  		} -		else -		{ + +		if ((c = xt_find_node(node->children, "show")) && c->text_len > 0) { +			bud->away_state = (void *) jabber_away_state_by_code(c->text); +		} else {  			bud->away_state = NULL;  		} -		 -		if( ( c = xt_find_node( node->children, "priority" ) ) && c->text_len > 0 ) -			bud->priority = atoi( c->text ); -		else + +		if ((c = xt_find_node(node->children, "priority")) && c->text_len > 0) { +			bud->priority = atoi(c->text); +		} else {  			bud->priority = 0; -		 -		if( bud && ( cap = xt_find_node( node->children, "c" ) ) && -		    ( s = xt_find_attr( cap, "xmlns" ) ) && strcmp( s, XMLNS_CAPS ) == 0 ) -		{ +		} + +		if (bud && (cap = xt_find_node(node->children, "c")) && +		    (s = xt_find_attr(cap, "xmlns")) && strcmp(s, XMLNS_CAPS) == 0) {  			/* This <presence> stanza includes an XEP-0115  			   capabilities part. Not too interesting, but we can  			   see if it has an ext= attribute. */ -			s = xt_find_attr( cap, "ext" ); -			if( s && ( strstr( s, "cstates" ) || strstr( s, "chatstate" ) ) ) +			s = xt_find_attr(cap, "ext"); +			if (s && (strstr(s, "cstates") || strstr(s, "chatstate"))) {  				bud->flags |= JBFLAG_DOES_XEP85; -			 +			} +  			/* This field can contain more information like xhtml  			   support, but we don't support that ourselves.  			   Officially the ext= tag was deprecated, but enough  			   clients do send it. -			    +  			   (I'm aware that this is not the right way to use  			   this field.) See for an explanation of ext=:  			   http://www.xmpp.org/extensions/attic/xep-0115-1.3.html*/  		} -		 -		if( is_chat ) -			jabber_chat_pkt_presence( ic, bud, node ); -		else -			send_presence = jabber_buddy_by_jid( ic, bud->bare_jid, 0 ); -	} -	else if( strcmp( type, "unavailable" ) == 0 ) -	{ -		if( ( bud = jabber_buddy_by_jid( ic, from, 0 ) ) == NULL ) -		{ + +		if (is_chat) { +			jabber_chat_pkt_presence(ic, bud, node); +		} else { +			send_presence = jabber_buddy_by_jid(ic, bud->bare_jid, 0); +		} +	} else if (strcmp(type, "unavailable") == 0) { +		if ((bud = jabber_buddy_by_jid(ic, from, 0)) == NULL) {  			/*  			imcb_log( ic, "Warning: Received presence information from unknown JID: %s", from );  			*/  			return XT_HANDLED;  		} -		 +  		/* Handle this before we delete the JID. */ -		if( is_chat ) -		{ -			jabber_chat_pkt_presence( ic, bud, node ); +		if (is_chat) { +			jabber_chat_pkt_presence(ic, bud, node);  		} -		 -		if( strchr( from, '/' ) == NULL ) + +		if (strchr(from, '/') == NULL) {  			/* Sometimes servers send a type="unavailable" from a  			   bare JID, which should mean that suddenly all  			   resources for this JID disappeared. */ -			jabber_buddy_remove_bare( ic, from ); -		else -			jabber_buddy_remove( ic, from ); -		 -		if( is_chat ) -		{ -			/* Nothing else to do for now? */ +			jabber_buddy_remove_bare(ic, from); +		} else { +			jabber_buddy_remove(ic, from);  		} -		else if( ( s = strchr( from, '/' ) ) ) -		{ + +		if (is_chat) { +			/* Nothing else to do for now? */ +		} else if ((s = strchr(from, '/'))) {  			*s = 0; -		 +  			/* If another resource is still available, send its presence  			   information. */ -			if( ( send_presence = jabber_buddy_by_jid( ic, from, 0 ) ) == NULL ) -			{ +			if ((send_presence = jabber_buddy_by_jid(ic, from, 0)) == NULL) {  				/* Otherwise, count him/her as offline now. */ -				imcb_buddy_status( ic, from, 0, NULL, NULL ); +				imcb_buddy_status(ic, from, 0, NULL, NULL);  			} -			 +  			*s = '/'; +		} else { +			imcb_buddy_status(ic, from, 0, NULL, NULL);  		} -		else -		{ -			imcb_buddy_status( ic, from, 0, NULL, NULL ); -		} -	} -	else if( strcmp( type, "subscribe" ) == 0 ) -	{ -		jabber_buddy_ask( ic, from ); -	} -	else if( strcmp( type, "subscribed" ) == 0 ) -	{ +	} else if (strcmp(type, "subscribe") == 0) { +		jabber_buddy_ask(ic, from); +	} else if (strcmp(type, "subscribed") == 0) {  		/* Not sure about this one, actually... */ -		imcb_log( ic, "%s just accepted your authorization request", from ); -	} -	else if( strcmp( type, "unsubscribe" ) == 0 || strcmp( type, "unsubscribed" ) == 0 ) -	{ +		imcb_log(ic, "%s just accepted your authorization request", from); +	} else if (strcmp(type, "unsubscribe") == 0 || strcmp(type, "unsubscribed") == 0) {  		/* Do nothing here. Plenty of control freaks or over-curious  		   souls get excited when they can see who still has them in  		   their buddy list and who finally removed them. Somehow I  		   got the impression that those are the people who get  		   removed from many buddy lists for "some" reason... -		    +  		   If you're one of those people, this is your chance to write  		   your first line of code in C... */ -	} -	else if( strcmp( type, "error" ) == 0 ) -	{ -		return jabber_cache_handle_packet( ic, node ); -		 +	} else if (strcmp(type, "error") == 0) { +		return jabber_cache_handle_packet(ic, node); +  		/*  		struct jabber_error *err;  		if( ( c = xt_find_node( node->children, "error" ) ) )  		{ -			err = jabber_error_parse( c, XMLNS_STANZA_ERROR ); -			imcb_error( ic, "Stanza (%s) error: %s%s%s", node->name, -			            err->code, err->text ? ": " : "", -			            err->text ? err->text : "" ); -			jabber_error_free( err ); +		        err = jabber_error_parse( c, XMLNS_STANZA_ERROR ); +		        imcb_error( ic, "Stanza (%s) error: %s%s%s", node->name, +		                    err->code, err->text ? ": " : "", +		                    err->text ? err->text : "" ); +		        jabber_error_free( err );  		} */  	} -	if( send_presence ) -	{ +	if (send_presence) {  		int is_away = 0; -		if( send_presence->away_state && -		    strcmp( send_presence->away_state->code, "chat" ) != 0 ) +		if (send_presence->away_state && +		    strcmp(send_presence->away_state->code, "chat") != 0) {  			is_away = OPT_AWAY; +		} -		imcb_buddy_status( ic, send_presence->bare_jid, OPT_LOGGED_IN | is_away, -		                   is_away ? send_presence->away_state->full_name : NULL, -		                   send_presence->away_message ); +		imcb_buddy_status(ic, send_presence->bare_jid, OPT_LOGGED_IN | is_away, +		                  is_away ? send_presence->away_state->full_name : NULL, +		                  send_presence->away_message);  	} -	 +  	return XT_HANDLED;  }  /* Whenever presence information is updated, call this function to inform the     server. */ -int presence_send_update( struct im_connection *ic ) +int presence_send_update(struct im_connection *ic)  {  	struct jabber_data *jd = ic->proto_data;  	struct xt_node *node, *cap;  	GSList *l;  	int st; -	 -	node = jabber_make_packet( "presence", NULL, NULL, NULL ); -	xt_add_child( node, xt_new_node( "priority", set_getstr( &ic->acc->set, "priority" ), NULL ) ); -	if( jd->away_state ) -		xt_add_child( node, xt_new_node( "show", jd->away_state->code, NULL ) ); -	if( jd->away_message ) -		xt_add_child( node, xt_new_node( "status", jd->away_message, NULL ) ); -	 + +	node = jabber_make_packet("presence", NULL, NULL, NULL); +	xt_add_child(node, xt_new_node("priority", set_getstr(&ic->acc->set, "priority"), NULL)); +	if (jd->away_state) { +		xt_add_child(node, xt_new_node("show", jd->away_state->code, NULL)); +	} +	if (jd->away_message) { +		xt_add_child(node, xt_new_node("status", jd->away_message, NULL)); +	} +  	/* This makes the packet slightly bigger, but clients interested in  	   capabilities can now cache the discovery info. This reduces the  	   usual post-login iq-flood. See XEP-0115. At least libpurple and  	   Trillian seem to do this right. */ -	cap = xt_new_node( "c", NULL, NULL ); -	xt_add_attr( cap, "xmlns", XMLNS_CAPS ); -	xt_add_attr( cap, "node", "http://bitlbee.org/xmpp/caps" ); -	xt_add_attr( cap, "ver", BITLBEE_VERSION ); /* The XEP wants this hashed, but nobody's doing that. */ -	xt_add_child( node, cap ); -	 -	st = jabber_write_packet( ic, node ); -	 +	cap = xt_new_node("c", NULL, NULL); +	xt_add_attr(cap, "xmlns", XMLNS_CAPS); +	xt_add_attr(cap, "node", "http://bitlbee.org/xmpp/caps"); +	xt_add_attr(cap, "ver", BITLBEE_VERSION);   /* The XEP wants this hashed, but nobody's doing that. */ +	xt_add_child(node, cap); + +	st = jabber_write_packet(ic, node); +  	/* Have to send this update to all groupchats too, the server won't  	   do this automatically. */ -	for( l = ic->groupchats; l && st; l = l->next ) -	{ +	for (l = ic->groupchats; l && st; l = l->next) {  		struct groupchat *c = l->data;  		struct jabber_chat *jc = c->data; -		 -		xt_add_attr( node, "to", jc->my_full_jid ); -		st = jabber_write_packet( ic, node ); + +		xt_add_attr(node, "to", jc->my_full_jid); +		st = jabber_write_packet(ic, node);  	} -	 -	xt_free_node( node ); + +	xt_free_node(node);  	return st;  }  /* Send a subscribe/unsubscribe request to a buddy. */ -int presence_send_request( struct im_connection *ic, char *handle, char *request ) +int presence_send_request(struct im_connection *ic, char *handle, char *request)  {  	struct xt_node *node;  	int st; -	 -	node = jabber_make_packet( "presence", NULL, NULL, NULL ); -	xt_add_attr( node, "to", handle ); -	xt_add_attr( node, "type", request ); -	 -	st = jabber_write_packet( ic, node ); -	 -	xt_free_node( node ); + +	node = jabber_make_packet("presence", NULL, NULL, NULL); +	xt_add_attr(node, "to", handle); +	xt_add_attr(node, "type", request); + +	st = jabber_write_packet(ic, node); + +	xt_free_node(node);  	return st;  }  | 
