Exemplo n.º 1
0
GTree*
meta0_utils_list_to_tree(GSList *list)
{
	GSList *l;
	GTree *result = NULL;

	EXTRA_ASSERT(list != NULL);

	result = g_tree_new_full(
			hashstr_quick_cmpdata, NULL,
			g_free, (GDestroyNotify)garray_free);

	for (l=list; l ;l=l->next) {
		struct meta0_info_s *m0i;

		if (!(m0i = l->data))
			continue;

		gchar url[STRLEN_ADDRINFO];
		grid_addrinfo_to_string(&(m0i->addr), url, sizeof(url));

		gsize len = m0i->prefixes_size;
		len = len / 2;
		GArray *pfx = g_array_new(FALSE, FALSE, sizeof(guint16));
		g_array_append_vals(pfx, m0i->prefixes, len);

		g_tree_replace(result, hashstr_create(url), pfx);
	}
	
	return result;
}
Exemplo n.º 2
0
static GTree*
build_version(struct cfg_s *cfg)
{
	GTree *v = version_empty();
	for (; cfg->name ;++cfg) {
		struct object_version_s o;
		o.version = cfg->v;
		o.when = cfg->t;
		g_tree_insert(v, hashstr_create(cfg->name),
				g_memdup(&o, sizeof(o)));
	}
	return v;
}
Exemplo n.º 3
0
static gboolean
hook_extract(gchar *k, GByteArray *v, GTree *version)
{
	if (!g_str_has_prefix(k, "version:"))
		return FALSE;

	gchar *p, buf[v->len+1];
	memset(buf, 0, v->len + 1);
	memcpy(buf, v->data, v->len);
	if (!(p = strchr(buf, ':')))
		return FALSE;

	*(p++) = '\0';
	struct object_version_s ov;
	ov.version = atoi(buf);
	ov.when = atoi(p);
	g_tree_insert(version,
			hashstr_create(k+sizeof("version:")-1),
			g_memdup(&ov, sizeof(ov)));
	return FALSE;
}