Esempio n. 1
0
char * xml_node_get_base64_text(struct xml_node_ctx *ctx, xml_node_t *node,
				int *ret_len)
{
	char *txt;
	unsigned char *ret;
	size_t len;

	txt = xml_node_get_text(ctx, node);
	if (txt == NULL)
		return NULL;

	ret = base64_decode((unsigned char *) txt, strlen(txt), &len);
	if (ret_len)
		*ret_len = len;
	xml_node_get_text_free(ctx, txt);
	if (ret == NULL)
		return NULL;
	txt = os_malloc(len + 1);
	if (txt == NULL) {
		os_free(ret);
		return NULL;
	}
	os_memcpy(txt, ret, len);
	txt[len] = '\0';
	return txt;
}
Esempio n. 2
0
static void
extract_work(xmlNodePtr entry, gchar ** org)
{
    while (entry) {
	if (!xmlStrcmp(entry->name, CXMLCHARP("Organization"))) {
	    *org = xml_node_get_text(entry);
	    return;
	}

	entry = entry->next;
    }
}
Esempio n. 3
0
static void
extract_data(xmlNodePtr entry, gchar ** first_name, gchar ** last_name,
	     gchar ** nick_name)
{
    gchar *title = NULL;
    gchar *prefix = NULL;
    gchar *first = NULL;
    gchar *middle = NULL;
    GString *_first_name = NULL;

    while (entry) {
	if (!xmlStrcmp(entry->name, CXMLCHARP("FirstName")))
	    first = xml_node_get_text(entry);
	else if (!xmlStrcmp(entry->name, CXMLCHARP("MiddleName")))
	    middle = xml_node_get_text(entry);
	else if (!xmlStrcmp(entry->name, CXMLCHARP("Title")))
	    title = xml_node_get_text(entry);
	else if (!xmlStrcmp(entry->name, CXMLCHARP("NamePrefix")))
	    prefix = xml_node_get_text(entry);
	else if (!xmlStrcmp(entry->name, CXMLCHARP("LastName")))
	    *last_name = xml_node_get_text(entry);
	else if (!xmlStrcmp(entry->name, CXMLCHARP("NickName")))
	    *nick_name = xml_node_get_text(entry);

	entry = entry->next;
    }

    /* construct first name */
    if (title)
	_first_name = g_string_new(title);

    if (prefix) {
	if (_first_name) {
	    _first_name = g_string_append_c(_first_name, ' ');
	    _first_name = g_string_append(_first_name, prefix);
	} else
	    _first_name = g_string_new(prefix);
    }

    if (first) {
	if (_first_name) {
	    _first_name = g_string_append_c(_first_name, ' ');
	    _first_name = g_string_append(_first_name, first);
	} else
	    _first_name = g_string_new(first);
    }

    if (middle) {
	if (_first_name) {
	    _first_name = g_string_append_c(_first_name, ' ');
	    _first_name = g_string_append(_first_name, middle);
	} else
	    _first_name = g_string_new(middle);
    }

    if (_first_name)
	*first_name = g_string_free(_first_name, FALSE);
    else
	*first_name = NULL;
}
Esempio n. 4
0
static void
extract_net(xmlNodePtr entry, GList ** mail_addrs)
{
    while (entry) {
	gchar *uri_type = NULL;
	gchar *mail_addr;

	if (!xmlStrcmp(entry->name, CXMLCHARP("Uri"))
	    && g_strcmp0(uri_type = xml_node_get_attr(entry, CXMLCHARP("type")),
                         "email") == 0
	    && (mail_addr = xml_node_get_text(entry)) != NULL)
	    *mail_addrs = g_list_prepend(*mail_addrs, mail_addr);
	g_free(uri_type);

	entry = entry->next;
    }
}