コード例 #1
0
GSList *check_file_load(GSList *ud_list, GFile *file)
{
	g_assert(file);

	char *data = NULL;
	gsize len = 0;
	GError *error = NULL;

	if (!g_file_load_contents(file, NULL, &data, &len, NULL, &error)) {
		check_file_error(file, error);
		g_error_free(error);
		return 0;
	}

	GInputStream *is = g_memory_input_stream_new_from_data(data, len, NULL);
	GDataInputStream *dis = g_data_input_stream_new(is);

	char *line = NULL;
	len = 0;
	error = NULL;

	while ((line = g_data_input_stream_read_line_utf8(dis, &len, NULL, &error))) {
		enum hash_func_e id = HASH_FUNC_INVALID;
		char *filename = NULL;
		char *digest = NULL;

		if ((len >= 8) &&
			check_file_parse_line(line, &id, &filename, &digest))
		{
			if (HASH_FUNC_IS_VALID(id))
				gui_enable_hash_func(id);

			ud_list = check_file_add_uri(ud_list, file, filename, digest);
		}

		g_free(line);
	}

	if (error) {
		check_file_error(file, error);
		g_error_free(error);
	} else
		check_file_enable_hinted_hash_func(file);

	g_object_unref(dis);
	g_object_unref(is);
	g_free(data);

	return ud_list;
}
コード例 #2
0
ファイル: list.c プロジェクト: tristanheaven/gtkhash
void list_set_digest(const unsigned int row, const enum hash_func_e id,
	const char * const digest)
{
	g_assert(row <= list.rows);
	g_assert(HASH_FUNC_IS_VALID(id));

	GtkTreeIter iter;
	if (!gtk_tree_model_iter_nth_child(gui.treemodel, &iter, NULL, row))
		g_assert_not_reached();

	list_scroll_to_next_row(iter);

	gtk_list_store_set(gui.liststore, &iter,
		list_priv.hash_cols[id], digest,
		-1);
}
コード例 #3
0
ファイル: list.c プロジェクト: zaenal1234/gtkhash
void list_set_digest(const char *uri, const enum hash_func_e id,
	const char *digest)
{
	g_assert(uri);
	g_assert(HASH_FUNC_IS_VALID(id));

	GtkTreeIter iter;
	int row = list_find_row(uri);
	g_assert (row >= 0);

	if (!gtk_tree_model_get_iter_first(gui.treemodel, &iter))
		return;

	for (int i = 0; i < row; i++)
		gtk_tree_model_iter_next(gui.treemodel, &iter);

	gtk_list_store_set(gui.liststore, &iter, COL_HASH + id, digest, -1);
}
コード例 #4
0
ファイル: list.c プロジェクト: tristanheaven/gtkhash
char *list_get_digest(const unsigned int row, const enum hash_func_e id)
{
	g_assert(row <= list.rows);
	g_assert(HASH_FUNC_IS_VALID(id));

	GtkTreeIter iter;

	if (!gtk_tree_model_iter_nth_child(gui.treemodel, &iter, NULL, row))
		return NULL;

	char *digest;
	GValue value = G_VALUE_INIT;

	gtk_tree_model_get_value(gui.treemodel, &iter, list_priv.hash_cols[id],
		&value);
	digest = g_value_dup_string(&value);
	g_value_unset(&value);

	return digest;
}
コード例 #5
0
ファイル: list.c プロジェクト: zaenal1234/gtkhash
char *list_get_digest(const unsigned int row, const enum hash_func_e id)
{
	g_assert(row <= list_count_rows());
	g_assert(HASH_FUNC_IS_VALID(id));

	GtkTreeIter iter;
	char *digest;
	GValue value;
	value.g_type = 0;

	if (!gtk_tree_model_get_iter_first(gui.treemodel, &iter))
		return NULL;

	for (unsigned int i = 0; i < row; i++)
		gtk_tree_model_iter_next(gui.treemodel, &iter);

	gtk_tree_model_get_value(gui.treemodel, &iter, COL_HASH + id, &value);
	digest = g_strdup(g_value_get_string(&value));
	g_value_unset(&value);

	return digest;
}