static void rm_tm_chunk_flush(RmTreeMerger *self, char **out_paths, int n_paths) { rm_tm_count_files(&self->count_tree, out_paths, self->session); if(self->session->cfg->use_meta_cache) { for(int i = 0; i < n_paths; ++i) { g_free(out_paths[i]); } } }
RmTreeMerger *rm_tm_new(RmSession *session) { RmTreeMerger *self = g_slice_new(RmTreeMerger); self->session = session; g_queue_init(&self->valid_dirs); self->free_list = g_queue_new(); self->result_table = g_hash_table_new_full((GHashFunc)rm_directory_hash, (GEqualFunc)rm_directory_equal, NULL, (GDestroyNotify)g_queue_free); self->file_groups = g_hash_table_new_full((GHashFunc)rm_digest_hash, (GEqualFunc)rm_digest_equal, NULL, (GDestroyNotify)g_queue_free); self->known_hashs = g_hash_table_new_full(NULL, NULL, NULL, NULL); rm_trie_init(&self->dir_tree); rm_trie_init(&self->count_tree); rm_tm_count_files(&self->count_tree, session->cfg->paths, session); return self; }