/** * ggit_tree_get_by_path: * @tree: a #GgitTree. * @path: a path. * @error: a #GError for error reporting, or %NULL. * * Retrieves a tree entry contained in a tree or in any of its subtrees, * given its relative path. * * Returns: (transfer full): a #GgitTreeEntry. * **/ GgitTreeEntry * ggit_tree_get_by_path (GgitTree *tree, const gchar *path, GError **error) { git_tree *t; GgitTreeEntry *entry = NULL; git_tree_entry *tree_entry; gint ret; g_return_val_if_fail (GGIT_IS_TREE (tree), NULL); g_return_val_if_fail (path != NULL, NULL); t = _ggit_native_get (tree); ret = git_tree_entry_bypath (&tree_entry, t, path); if (ret == GIT_OK) { entry = _ggit_tree_entry_wrap (tree_entry, TRUE); } else { _ggit_error_set (error, ret); } return entry; }
/** * ggit_tree_get: * @tree: a #GgitTree. * @i: the index of the entry. * * Get a tree entry by index. * * Returns: (transfer full): a #GgitTreeEntry. * **/ GgitTreeEntry * ggit_tree_get (GgitTree *tree, guint i) { git_tree *t; const git_tree_entry *entry; g_return_val_if_fail (GGIT_IS_TREE (tree), NULL); t = _ggit_native_get (tree); entry = git_tree_entry_byindex (t, i); return _ggit_tree_entry_wrap ((git_tree_entry *)entry, FALSE); }
static int walk_callback_wrapper (const char *root, const git_tree_entry *entry, gpointer payload) { gint ret; GgitTreeEntry *wentry; WalkInfo *info = (WalkInfo *)payload; wentry = _ggit_tree_entry_wrap (git_tree_entry_dup(entry), TRUE); ret = info->callback(root, wentry, info->user_data); ggit_tree_entry_unref (wentry); return ret; }
static int walk_callback_wrapper (const char *root, const git_tree_entry *entry, gpointer payload) { gint ret; GgitTreeEntry *wentry; WalkInfo *info = (WalkInfo *)payload; git_tree_entry *dest; ret = git_tree_entry_dup (&dest, entry); if (ret == GIT_OK) { wentry = _ggit_tree_entry_wrap (dest, TRUE); ret = info->callback(root, wentry, info->user_data); ggit_tree_entry_unref (wentry); } return ret; }
/** * ggit_tree_get_by_name: * @tree: a #GgitTree. * @name: a filename. * * Get a tree entry by name. * * Returns: (transfer full): a #GgitTreeEntry. * **/ GgitTreeEntry * ggit_tree_get_by_name (GgitTree *tree, const gchar *name) { git_tree *t; GgitTreeEntry *entry = NULL; const git_tree_entry *tree_entry; g_return_val_if_fail (GGIT_IS_TREE (tree), NULL); g_return_val_if_fail (name != NULL, NULL); t = _ggit_native_get (tree); tree_entry = git_tree_entry_byname (t, name); if (tree_entry != NULL) { entry = _ggit_tree_entry_wrap ((git_tree_entry *)tree_entry, FALSE); } return entry; }