view src/dbus-useful.c @ 12339:fdac1c5e6c68

[gaim-migrate @ 14643] Don't show offline bonjour uses as away. Of course, the only time you would ever have an offline bonjour user is if you add some random person to your buddy list committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Mon, 05 Dec 2005 03:42:48 +0000
parents c9312177821a
children 8bda65b88e49
line wrap: on
line source

#include <string.h>
#include <glib.h>

#include "dbus-useful.h"
#include "conversation.h"
#include "util.h"


GaimAccount *
gaim_accounts_find_ext(const char *name, const char *protocol_id, 
		       gboolean (*account_test)(const GaimAccount *account))
{
    GaimAccount *result = NULL;
    GList *l;
    char *who;
    
    if (name)
	who = g_strdup(gaim_normalize(NULL, name));
    else 
	who = NULL;
    
    for (l = gaim_accounts_get_all(); l != NULL; l = l->next) {
	GaimAccount *account = (GaimAccount *)l->data;
	
	if (who && strcmp(gaim_normalize(NULL, gaim_account_get_username(account)), who))
	    continue;

	if (protocol_id && strcmp(account->protocol_id, protocol_id))
	    continue;

	if (account_test && !account_test(account)) 
	    continue;

	result = account;
	break;
    }

    g_free(who);

    return result;
}

GaimAccount *gaim_accounts_find_any(const char *name, const char *protocol) 
{
    return gaim_accounts_find_ext(name, protocol, NULL);
}

GaimAccount *gaim_accounts_find_connected(const char *name, const char *protocol) 
{
    return gaim_accounts_find_ext(name, protocol, gaim_account_is_connected);
}