Add ostree_repo_remote_list()

Lists available remote names.
This commit is contained in:
Matthew Barnes 2014-12-16 10:29:09 -05:00
parent fd07a6a862
commit 39be27fc93
3 changed files with 52 additions and 0 deletions

View File

@ -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

View File

@ -880,6 +880,54 @@ ostree_repo_remote_change (OstreeRepo *self,
g_assert_not_reached ();
}
/**
* 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

View File

@ -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,