From 37382590dc66791f0cdaff876fba24875e9155af Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 31 Mar 2016 22:00:43 +0200 Subject: [PATCH] Export ostree_repo_get_remote_option* functions These are useful for ostree users (like xdg-app) that have custom options for remotes. In particular they are useful when we later make them all respect self->parent_repo. Closes: #236 Approved by: cgwalters --- src/libostree/libostree.sym | 3 + src/libostree/ostree-repo-private.h | 23 ----- src/libostree/ostree-repo-pull.c | 12 +-- src/libostree/ostree-repo.c | 131 +++++++++++++++++++--------- src/libostree/ostree-repo.h | 23 +++++ 5 files changed, 122 insertions(+), 70 deletions(-) diff --git a/src/libostree/libostree.sym b/src/libostree/libostree.sym index ca3c6fd0..c4f44d39 100644 --- a/src/libostree/libostree.sym +++ b/src/libostree/libostree.sym @@ -321,6 +321,9 @@ global: ostree_sysroot_deployment_unlock; ostree_deployment_get_unlocked; ostree_deployment_unlocked_state_to_string; + ostree_repo_get_remote_option; + ostree_repo_get_remote_list_option; + ostree_repo_get_remote_boolean_option; } LIBOSTREE_2016.3; /* NOTE NOTE NOTE diff --git a/src/libostree/ostree-repo-private.h b/src/libostree/ostree-repo-private.h index 484a6ec8..24380b21 100644 --- a/src/libostree/ostree-repo-private.h +++ b/src/libostree/ostree-repo-private.h @@ -195,29 +195,6 @@ _ostree_repo_commit_modifier_apply (OstreeRepo *self, gboolean _ostree_repo_remote_name_is_file (const char *remote_name); -gboolean -_ostree_repo_get_remote_option (OstreeRepo *self, - const char *remote_name, - const char *option_name, - const char *default_value, - char **out_value, - GError **error); - -gboolean -_ostree_repo_get_remote_list_option (OstreeRepo *self, - const char *remote_name, - const char *option_name, - char ***out_value, - GError **error); - -gboolean -_ostree_repo_get_remote_boolean_option (OstreeRepo *self, - const char *remote_name, - const char *option_name, - gboolean default_value, - gboolean *out_value, - GError **error); - gboolean _ostree_repo_get_remote_option_inherit (OstreeRepo *self, const char *remote_name, diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index a6272b17..8eca91c3 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -2008,9 +2008,9 @@ ostree_repo_pull_with_options (OstreeRepo *self, requested_refs_to_fetch = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); commits_to_fetch = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - if (!_ostree_repo_get_remote_option (self, - remote_name_or_baseurl, "metalink", - NULL, &metalink_url_str, error)) + if (!ostree_repo_get_remote_option (self, + remote_name_or_baseurl, "metalink", + NULL, &metalink_url_str, error)) goto out; if (!metalink_url_str) @@ -2064,9 +2064,9 @@ ostree_repo_pull_with_options (OstreeRepo *self, summary_bytes, FALSE); } - if (!_ostree_repo_get_remote_list_option (self, - remote_name_or_baseurl, "branches", - &configured_branches, error)) + if (!ostree_repo_get_remote_list_option (self, + remote_name_or_baseurl, "branches", + &configured_branches, error)) goto out; if (strcmp (soup_uri_get_scheme (pull_data->base_uri), "file") == 0) diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index a5d0bb2d..81b68a08 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -257,13 +257,29 @@ _ostree_repo_remote_name_is_file (const char *remote_name) return g_str_has_prefix (remote_name, "file://"); } +/** + * ostree_repo_get_remote_option: + * @self: A OstreeRepo + * @remote_name: Name + * @option_name: Option + * @default_value: (allow-none): Value returned if @option_name is not present + * @out_value: (out): Return location for value + * @error: Error + * + * OSTree remotes are represented by keyfile groups, formatted like: + * `[remote "remotename"]`. This function returns a value named @option_name + * underneath that group, or @default_value if the remote exists but not the + * option name. + * + * Returns: %TRUE on success, otherwise %FALSE with @error set + */ gboolean -_ostree_repo_get_remote_option (OstreeRepo *self, - const char *remote_name, - const char *option_name, - const char *default_value, - char **out_value, - GError **error) +ostree_repo_get_remote_option (OstreeRepo *self, + const char *remote_name, + const char *option_name, + const char *default_value, + char **out_value, + GError **error) { local_cleanup_remote OstreeRemote *remote = NULL; gboolean ret = FALSE; @@ -289,12 +305,29 @@ _ostree_repo_get_remote_option (OstreeRepo *self, return ret; } +/** + * ostree_repo_get_remote_list_option: + * @self: A OstreeRepo + * @remote_name: Name + * @option_name: Option + * @out_value: (out) (array zero-terminated=1): location to store the list + * of strings. The list should be freed with + * g_strfreev(). + * @error: Error + * + * OSTree remotes are represented by keyfile groups, formatted like: + * `[remote "remotename"]`. This function returns a value named @option_name + * underneath that group, and returns it as an zero terminated array of strings. + * If the option is not set, @out_value will be set to %NULL. + * + * Returns: %TRUE on success, otherwise %FALSE with @error set + */ gboolean -_ostree_repo_get_remote_list_option (OstreeRepo *self, - const char *remote_name, - const char *option_name, - char ***out_value, - GError **error) +ostree_repo_get_remote_list_option (OstreeRepo *self, + const char *remote_name, + const char *option_name, + char ***out_value, + GError **error) { local_cleanup_remote OstreeRemote *remote = NULL; gboolean ret = FALSE; @@ -331,13 +364,29 @@ _ostree_repo_get_remote_list_option (OstreeRepo *self, return ret; } +/** + * ostree_repo_get_remote_boolean_option: + * @self: A OstreeRepo + * @remote_name: Name + * @option_name: Option + * @default_value: (allow-none): Value returned if @option_name is not present + * @out_value: (out) : location to store the result. + * @error: Error + * + * OSTree remotes are represented by keyfile groups, formatted like: + * `[remote "remotename"]`. This function returns a value named @option_name + * underneath that group, and returns it as a boolean. + * If the option is not set, @out_value will be set to @default_value. + * + * Returns: %TRUE on success, otherwise %FALSE with @error set + */ gboolean -_ostree_repo_get_remote_boolean_option (OstreeRepo *self, - const char *remote_name, - const char *option_name, - gboolean default_value, - gboolean *out_value, - GError **error) +ostree_repo_get_remote_boolean_option (OstreeRepo *self, + const char *remote_name, + const char *option_name, + gboolean default_value, + gboolean *out_value, + GError **error) { local_cleanup_remote OstreeRemote *remote = NULL; gboolean ret = FALSE; @@ -374,9 +423,9 @@ _ostree_repo_get_remote_option_inherit (OstreeRepo *self, g_autofree char *value = NULL; gboolean ret = FALSE; - if (!_ostree_repo_get_remote_option (self, - remote_name, option_name, - NULL, &value, error)) + if (!ostree_repo_get_remote_option (self, + remote_name, option_name, + NULL, &value, error)) goto out; if (value == NULL && parent != NULL) @@ -412,9 +461,9 @@ _ostree_repo_remote_new_fetcher (OstreeRepo *self, g_return_val_if_fail (OSTREE_IS_REPO (self), NULL); g_return_val_if_fail (remote_name != NULL, NULL); - if (!_ostree_repo_get_remote_boolean_option (self, remote_name, - "tls-permissive", FALSE, - &tls_permissive, error)) + if (!ostree_repo_get_remote_boolean_option (self, remote_name, + "tls-permissive", FALSE, + &tls_permissive, error)) goto out; if (tls_permissive) @@ -426,13 +475,13 @@ _ostree_repo_remote_new_fetcher (OstreeRepo *self, g_autofree char *tls_client_cert_path = NULL; g_autofree char *tls_client_key_path = NULL; - if (!_ostree_repo_get_remote_option (self, remote_name, - "tls-client-cert-path", NULL, - &tls_client_cert_path, error)) + if (!ostree_repo_get_remote_option (self, remote_name, + "tls-client-cert-path", NULL, + &tls_client_cert_path, error)) goto out; - if (!_ostree_repo_get_remote_option (self, remote_name, - "tls-client-key-path", NULL, - &tls_client_key_path, error)) + if (!ostree_repo_get_remote_option (self, remote_name, + "tls-client-key-path", NULL, + &tls_client_key_path, error)) goto out; if ((tls_client_cert_path != NULL) != (tls_client_key_path != NULL)) @@ -462,9 +511,9 @@ _ostree_repo_remote_new_fetcher (OstreeRepo *self, { g_autofree char *tls_ca_path = NULL; - if (!_ostree_repo_get_remote_option (self, remote_name, - "tls-ca-path", NULL, - &tls_ca_path, error)) + if (!ostree_repo_get_remote_option (self, remote_name, + "tls-ca-path", NULL, + &tls_ca_path, error)) goto out; if (tls_ca_path != NULL) @@ -482,9 +531,9 @@ _ostree_repo_remote_new_fetcher (OstreeRepo *self, { g_autofree char *http_proxy = NULL; - if (!_ostree_repo_get_remote_option (self, remote_name, - "proxy", NULL, - &http_proxy, error)) + if (!ostree_repo_get_remote_option (self, remote_name, + "proxy", NULL, + &http_proxy, error)) goto out; if (http_proxy != NULL) @@ -1343,8 +1392,8 @@ ostree_repo_remote_get_gpg_verify (OstreeRepo *self, return TRUE; } - return _ostree_repo_get_remote_boolean_option (self, name, "gpg-verify", - TRUE, out_gpg_verify, error); + return ostree_repo_get_remote_boolean_option (self, name, "gpg-verify", + TRUE, out_gpg_verify, error); } /** @@ -1366,8 +1415,8 @@ ostree_repo_remote_get_gpg_verify_summary (OstreeRepo *self, gboolean *out_gpg_verify_summary, GError **error) { - return _ostree_repo_get_remote_boolean_option (self, name, "gpg-verify-summary", - FALSE, out_gpg_verify_summary, error); + return ostree_repo_get_remote_boolean_option (self, name, "gpg-verify-summary", + FALSE, out_gpg_verify_summary, error); } /** @@ -1889,8 +1938,8 @@ ostree_repo_remote_fetch_summary (OstreeRepo *self, g_return_val_if_fail (OSTREE_REPO (self), FALSE); g_return_val_if_fail (name != NULL, FALSE); - if (!_ostree_repo_get_remote_option (self, name, "metalink", NULL, - &metalink_url_string, error)) + if (!ostree_repo_get_remote_option (self, name, "metalink", NULL, + &metalink_url_string, error)) goto out; if (!repo_remote_fetch_summary (self, diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h index f83aef23..822014f2 100644 --- a/src/libostree/ostree-repo.h +++ b/src/libostree/ostree-repo.h @@ -147,6 +147,29 @@ gboolean ostree_repo_remote_get_gpg_verify_summary (OstreeRepo *self, gboolean *out_gpg_verify_summary, GError **error); +_OSTREE_PUBLIC +gboolean ostree_repo_get_remote_option (OstreeRepo *self, + const char *remote_name, + const char *option_name, + const char *default_value, + char **out_value, + GError **error); + +_OSTREE_PUBLIC +gboolean ostree_repo_get_remote_list_option (OstreeRepo *self, + const char *remote_name, + const char *option_name, + char ***out_value, + GError **error); + +_OSTREE_PUBLIC +gboolean ostree_repo_get_remote_boolean_option (OstreeRepo *self, + const char *remote_name, + const char *option_name, + gboolean default_value, + gboolean *out_value, + GError **error); + _OSTREE_PUBLIC gboolean ostree_repo_remote_gpg_import (OstreeRepo *self, const char *name,