ostree-repo: new public function `ostree_repo_list_refs_ext`
It accepts a `flags` argument to control its behavior. Differently from `ostree_repo_list_refs`, the `refspec_prefix` is not removed from the results. Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
parent
5d463ba577
commit
898c7b6577
|
|
@ -260,6 +260,7 @@ ostree_repo_write_content_async
|
||||||
ostree_repo_write_content_finish
|
ostree_repo_write_content_finish
|
||||||
ostree_repo_resolve_rev
|
ostree_repo_resolve_rev
|
||||||
ostree_repo_list_refs
|
ostree_repo_list_refs
|
||||||
|
ostree_repo_list_refs_ext
|
||||||
ostree_repo_remote_list_refs
|
ostree_repo_remote_list_refs
|
||||||
ostree_repo_load_variant
|
ostree_repo_load_variant
|
||||||
ostree_repo_load_commit
|
ostree_repo_load_commit
|
||||||
|
|
|
||||||
|
|
@ -315,4 +315,5 @@ local:
|
||||||
LIBOSTREE_2016.4 {
|
LIBOSTREE_2016.4 {
|
||||||
global:
|
global:
|
||||||
ostree_repo_get_dfd;
|
ostree_repo_get_dfd;
|
||||||
|
ostree_repo_list_refs_ext;
|
||||||
} LIBOSTREE_2016.3;
|
} LIBOSTREE_2016.3;
|
||||||
|
|
|
||||||
|
|
@ -508,20 +508,9 @@ enumerate_refs_recurse (OstreeRepo *repo,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
static gboolean
|
||||||
* ostree_repo_list_refs:
|
_ostree_repo_list_refs_internal (OstreeRepo *self,
|
||||||
* @self: Repo
|
gboolean cut_prefix,
|
||||||
* @refspec_prefix: (allow-none): Only list refs which match this prefix
|
|
||||||
* @out_all_refs: (out) (element-type utf8 utf8): Mapping from ref to checksum
|
|
||||||
* @cancellable: Cancellable
|
|
||||||
* @error: Error
|
|
||||||
*
|
|
||||||
* If @refspec_prefix is %NULL, list all local and remote refspecs,
|
|
||||||
* with their current values in @out_all_refs. Otherwise, only list
|
|
||||||
* refspecs which have @refspec_prefix as a prefix.
|
|
||||||
*/
|
|
||||||
gboolean
|
|
||||||
ostree_repo_list_refs (OstreeRepo *self,
|
|
||||||
const char *refspec_prefix,
|
const char *refspec_prefix,
|
||||||
GHashTable **out_all_refs,
|
GHashTable **out_all_refs,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
|
|
@ -568,12 +557,14 @@ ostree_repo_list_refs (OstreeRepo *self,
|
||||||
{
|
{
|
||||||
glnx_fd_close int base_fd = -1;
|
glnx_fd_close int base_fd = -1;
|
||||||
g_autoptr(GString) base_path = g_string_new ("");
|
g_autoptr(GString) base_path = g_string_new ("");
|
||||||
|
if (!cut_prefix)
|
||||||
|
g_string_printf (base_path, "%s/", ref_prefix);
|
||||||
|
|
||||||
if (!glnx_opendirat (self->repo_dir_fd, path, TRUE, &base_fd, error))
|
if (!glnx_opendirat (self->repo_dir_fd, cut_prefix ? path : prefix_path, TRUE, &base_fd, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (!enumerate_refs_recurse (self, remote, base_fd, base_path,
|
if (!enumerate_refs_recurse (self, remote, base_fd, base_path,
|
||||||
base_fd, ".",
|
base_fd, cut_prefix ? "." : ref_prefix,
|
||||||
ret_all_refs, cancellable, error))
|
ret_all_refs, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
@ -639,6 +630,54 @@ ostree_repo_list_refs (OstreeRepo *self,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_repo_list_refs:
|
||||||
|
* @self: Repo
|
||||||
|
* @refspec_prefix: (allow-none): Only list refs which match this prefix
|
||||||
|
* @out_all_refs: (out) (element-type utf8 utf8): Mapping from ref to checksum
|
||||||
|
* @cancellable: Cancellable
|
||||||
|
* @error: Error
|
||||||
|
*
|
||||||
|
* If @refspec_prefix is %NULL, list all local and remote refspecs,
|
||||||
|
* with their current values in @out_all_refs. Otherwise, only list
|
||||||
|
* refspecs which have @refspec_prefix as a prefix.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_repo_list_refs (OstreeRepo *self,
|
||||||
|
const char *refspec_prefix,
|
||||||
|
GHashTable **out_all_refs,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return _ostree_repo_list_refs_internal (self, TRUE, refspec_prefix, out_all_refs, cancellable, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_repo_list_refs_ext:
|
||||||
|
* @self: Repo
|
||||||
|
* @refspec_prefix: (allow-none): Only list refs which match this prefix
|
||||||
|
* @out_all_refs: (out) (element-type utf8 utf8): Mapping from ref to checksum
|
||||||
|
* @flags: Options controlling listing behavior
|
||||||
|
* @cancellable: Cancellable
|
||||||
|
* @error: Error
|
||||||
|
*
|
||||||
|
* If @refspec_prefix is %NULL, list all local and remote refspecs,
|
||||||
|
* with their current values in @out_all_refs. Otherwise, only list
|
||||||
|
* refspecs which have @refspec_prefix as a prefix. Differently from
|
||||||
|
* ostree_repo_list_refs(), the prefix will not be removed from the ref
|
||||||
|
* name.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_repo_list_refs_ext (OstreeRepo *self,
|
||||||
|
const char *refspec_prefix,
|
||||||
|
GHashTable **out_all_refs,
|
||||||
|
OstreeRepoListRefsExtFlags flags,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return _ostree_repo_list_refs_internal (self, FALSE, refspec_prefix, out_all_refs, cancellable, error);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ostree_repo_remote_list_refs:
|
* ostree_repo_remote_list_refs:
|
||||||
* @self: Repo
|
* @self: Repo
|
||||||
|
|
|
||||||
|
|
@ -342,6 +342,22 @@ gboolean ostree_repo_list_refs (OstreeRepo *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OstreeRepoListRefsExtFlags:
|
||||||
|
* @OSTREE_REPO_LIST_REFS_EXT_NONE: No flags.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
OSTREE_REPO_LIST_REFS_EXT_NONE = 0,
|
||||||
|
} OstreeRepoListRefsExtFlags;
|
||||||
|
|
||||||
|
_OSTREE_PUBLIC
|
||||||
|
gboolean ostree_repo_list_refs_ext (OstreeRepo *self,
|
||||||
|
const char *refspec_prefix,
|
||||||
|
GHashTable **out_all_refs,
|
||||||
|
OstreeRepoListRefsExtFlags flags,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
_OSTREE_PUBLIC
|
_OSTREE_PUBLIC
|
||||||
gboolean ostree_repo_remote_list_refs (OstreeRepo *self,
|
gboolean ostree_repo_remote_list_refs (OstreeRepo *self,
|
||||||
const char *remote_name,
|
const char *remote_name,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue