diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2014-12-16 10:29:09 -0500 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2014-12-17 16:05:37 -0500 |
commit | 39be27fc93926c8ecede26d10385673100b8540f (patch) | |
tree | 8a9e8ffe7a8afab7ea7cd29fb8fcc55618ae22a3 | |
parent | fd07a6a8629d24012be7cb5f343ffa638e1f6120 (diff) | |
download | ostree-39be27fc93926c8ecede26d10385673100b8540f.tar.gz |
Add ostree_repo_remote_list()
Lists available remote names.
-rw-r--r-- | doc/ostree-sections.txt | 1 | ||||
-rw-r--r-- | src/libostree/ostree-repo.c | 48 | ||||
-rw-r--r-- | src/libostree/ostree-repo.h | 3 |
3 files changed, 52 insertions, 0 deletions
diff --git a/doc/ostree-sections.txt b/doc/ostree-sections.txt index dcdf40bf..897d389b 100644 --- a/doc/ostree-sections.txt +++ b/doc/ostree-sections.txt @@ -61,6 +61,7 @@ ostree_repo_get_mode ostree_repo_mode_from_string ostree_repo_get_config ostree_repo_copy_config +ostree_repo_remote_list ostree_repo_get_parent ostree_repo_write_config OstreeRepoTransactionStats diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index fb4ff91c..9d581224 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -881,6 +881,54 @@ ostree_repo_remote_change (OstreeRepo *self, } /** + * ostree_repo_remote_list: + * @self: Repo + * @out_n_remotes: (out) (allow-none): Number of remotes available + * + * List available remote names in an #OstreeRepo. Remote names are sorted + * alphabetically. If no remotes are available the function returns %NULL. + * + * Returns: (array length=out_n_remotes) (transfer full): a %NULL-terminated + * array of remote names + **/ +char ** +ostree_repo_remote_list (OstreeRepo *self, + guint *out_n_remotes) +{ + char **remotes = NULL; + guint n_remotes; + + g_mutex_lock (&self->remotes_lock); + + n_remotes = g_hash_table_size (self->remotes); + + if (n_remotes > 0) + { + GList *list, *link; + guint ii = 0; + + remotes = g_new (char *, n_remotes + 1); + + list = g_hash_table_get_keys (self->remotes); + list = g_list_sort (list, (GCompareFunc) strcmp); + + for (link = list; link != NULL; link = link->next) + remotes[ii++] = g_strdup (link->data); + + g_list_free (list); + + remotes[ii] = NULL; + } + + g_mutex_unlock (&self->remotes_lock); + + if (out_n_remotes) + *out_n_remotes = n_remotes; + + return remotes; +} + +/** * ostree_repo_remote_get_url: * @self: Repo * @name: Name of remote diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h index 7320f2c7..ce786b19 100644 --- a/src/libostree/ostree-repo.h +++ b/src/libostree/ostree-repo.h @@ -95,6 +95,9 @@ gboolean ostree_repo_remote_change (OstreeRepo *self, GCancellable *cancellable, GError **error); +char ** ostree_repo_remote_list (OstreeRepo *self, + guint *out_n_remotes); + gboolean ostree_repo_remote_get_url (OstreeRepo *self, const char *name, char **out_url, |