예제 #1
0
static GSList *check_file_add_uri(GSList *ud_list, GFile *file, char *filename,
	char *digest)
{
	g_assert(file);
	g_assert(filename && *filename);
	g_assert(digest && *digest);

	char *target_uri = NULL;

	if (g_path_is_absolute(filename)) {
		GFile *target = g_file_new_for_path(filename);
		target_uri = g_file_get_uri(target);
		g_object_unref(target);
	} else {
		// Assume path is relative to the check file
		GFile *dir = g_file_get_parent(file);
		char *dir_uri = g_file_get_uri(dir);
		target_uri = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s",
			dir_uri, filename);
		g_free(dir_uri);
		g_object_unref(dir);
	}

	g_free(filename);

	return g_slist_prepend(ud_list, uri_digest_new(target_uri, digest));
}
예제 #2
0
GSList *uri_digest_list_from_uri_strv(char **uris)
{
	if (!uris)
		return NULL;

	GSList *ud_list = NULL;

	for (int i = 0; uris[i]; i++)
		ud_list = g_slist_prepend(ud_list, uri_digest_new(uris[i], NULL));

	return g_slist_reverse(ud_list);
}
예제 #3
0
GSList *uri_digest_list_from_uri_list(GSList *uris)
{
	if (!uris)
		return NULL;

	GSList *ud_list = NULL;

	do {
		ud_list = g_slist_prepend(ud_list, uri_digest_new(uris->data, NULL));
	} while ((uris = g_slist_next(uris)));

	return g_slist_reverse(ud_list);
}