repo: Redo ostree_repo_remote_get_url()

Make it work like in ostree_repo_pull_with_options(), handling "file://"
remotes and inheriting the "url" option from parent repos if needed.
This commit is contained in:
Matthew Barnes 2015-06-06 16:47:15 -04:00 committed by Giuseppe Scrivano
parent d4111aeac0
commit 3515e01f6a
2 changed files with 24 additions and 32 deletions

View File

@ -1604,7 +1604,6 @@ ostree_repo_pull_with_options (OstreeRepo *self,
gpointer key, value; gpointer key, value;
g_autofree char *remote_key = NULL; g_autofree char *remote_key = NULL;
g_autofree char *path = NULL; g_autofree char *path = NULL;
g_autofree char *baseurl = NULL;
g_autofree char *metalink_url_str = NULL; g_autofree char *metalink_url_str = NULL;
g_autoptr(GHashTable) requested_refs_to_fetch = NULL; g_autoptr(GHashTable) requested_refs_to_fetch = NULL;
g_autoptr(GHashTable) commits_to_fetch = NULL; g_autoptr(GHashTable) commits_to_fetch = NULL;
@ -1670,14 +1669,8 @@ ostree_repo_pull_with_options (OstreeRepo *self,
pull_data->start_time = g_get_monotonic_time (); pull_data->start_time = g_get_monotonic_time ();
if (_ostree_repo_remote_name_is_file (remote_name_or_baseurl)) if (!_ostree_repo_remote_name_is_file (remote_name_or_baseurl))
{ pull_data->remote_name = g_strdup (remote_name_or_baseurl);
baseurl = g_strdup (remote_name_or_baseurl);
}
else
{
pull_data->remote_name = g_strdup (remote_name_or_baseurl);
}
if (!ostree_repo_remote_get_gpg_verify (self, remote_name_or_baseurl, if (!ostree_repo_remote_get_gpg_verify (self, remote_name_or_baseurl,
&pull_data->gpg_verify, error)) &pull_data->gpg_verify, error))
@ -1700,19 +1693,10 @@ ostree_repo_pull_with_options (OstreeRepo *self,
if (!metalink_url_str) if (!metalink_url_str)
{ {
if (baseurl == NULL) g_autofree char *baseurl = NULL;
{
if (!_ostree_repo_get_remote_option_inherit (self, remote_name_or_baseurl, "url", &baseurl, error))
goto out;
}
if (baseurl == NULL) if (!ostree_repo_remote_get_url (self, remote_name_or_baseurl, &baseurl, error))
{ goto out;
g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
"No \"url\" option in remote \"%s\"",
remote_name_or_baseurl);
goto out;
}
pull_data->base_uri = soup_uri_new (baseurl); pull_data->base_uri = soup_uri_new (baseurl);

View File

@ -1206,24 +1206,32 @@ ostree_repo_remote_get_url (OstreeRepo *self,
char **out_url, char **out_url,
GError **error) GError **error)
{ {
local_cleanup_remote OstreeRemote *remote = NULL;
g_autofree char *url = NULL; g_autofree char *url = NULL;
gboolean ret = FALSE; gboolean ret = FALSE;
g_return_val_if_fail (name != NULL, FALSE); g_return_val_if_fail (name != NULL, FALSE);
remote = ost_repo_get_remote (self, name, error); if (_ostree_repo_remote_name_is_file (name))
if (remote == NULL)
goto out;
url = g_key_file_get_string (remote->options, remote->group, "url", error);
if (url != NULL)
{ {
gs_transfer_out_value (out_url, &url); url = g_strdup (name);
ret = TRUE;
} }
else
{
if (!_ostree_repo_get_remote_option_inherit (self, name, "url", &url, error))
goto out;
if (url == NULL)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
"No \"url\" option in remote \"%s\"", name);
goto out;
}
}
if (out_url != NULL)
*out_url = g_steal_pointer (&url);
ret = TRUE;
out: out:
return ret; return ret;