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; }
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); }
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); }
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; }
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; }