diff options
author | Thomas Haller <thaller@redhat.com> | 2021-07-12 18:16:10 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2021-07-12 18:39:59 +0200 |
commit | c6fefce8a483ce273fe6fbce8db7eeb53179e2f5 (patch) | |
tree | 6f1cb8237a70e7ce02c4ebf5a2e50b8399f7f17b /src/nm-cloud-setup | |
parent | 78adf4796e84f1b299270abd50dbf7343fb7f0b4 (diff) | |
download | NetworkManager-c6fefce8a483ce273fe6fbce8db7eeb53179e2f5.tar.gz |
cloud-setup: add nmcs_utils_uri_complete_interned() for constructing URI for _ec2_base()
Diffstat (limited to 'src/nm-cloud-setup')
-rw-r--r-- | src/nm-cloud-setup/nm-cloud-setup-utils.c | 14 | ||||
-rw-r--r-- | src/nm-cloud-setup/nm-cloud-setup-utils.h | 2 | ||||
-rw-r--r-- | src/nm-cloud-setup/nmcs-provider-ec2.c | 17 |
3 files changed, 17 insertions, 16 deletions
diff --git a/src/nm-cloud-setup/nm-cloud-setup-utils.c b/src/nm-cloud-setup/nm-cloud-setup-utils.c index 1cb14a8349..ed36b4dd2f 100644 --- a/src/nm-cloud-setup/nm-cloud-setup-utils.c +++ b/src/nm-cloud-setup/nm-cloud-setup-utils.c @@ -665,6 +665,20 @@ nmcs_utils_uri_build_concat_v(const char *base, const char **components, gsize n return nm_str_buf_finalize(&strbuf, NULL); } +const char * +nmcs_utils_uri_complete_interned(const char *uri) +{ + gs_free char *s = NULL; + + if (nm_str_is_empty(uri)) + return NULL; + if (NM_STR_HAS_PREFIX(uri, "http://") || NM_STR_HAS_PREFIX(uri, "https://") || strchr(uri, '/')) + return g_intern_string(uri); + + s = g_strconcat("http://", uri, NULL); + return g_intern_string(s); +} + /*****************************************************************************/ gboolean diff --git a/src/nm-cloud-setup/nm-cloud-setup-utils.h b/src/nm-cloud-setup/nm-cloud-setup-utils.h index 151b0a3627..bb47db26d5 100644 --- a/src/nm-cloud-setup/nm-cloud-setup-utils.h +++ b/src/nm-cloud-setup/nm-cloud-setup-utils.h @@ -121,6 +121,8 @@ char *nmcs_utils_uri_build_concat_v(const char *base, const char **components, g #define nmcs_utils_uri_build_concat(base, ...) \ nmcs_utils_uri_build_concat_v(base, ((const char *[]){__VA_ARGS__}), NM_NARG(__VA_ARGS__)) +const char *nmcs_utils_uri_complete_interned(const char *uri); + /*****************************************************************************/ gboolean nmcs_setting_ip_replace_ipv4_addresses(NMSettingIPConfig *s_ip, diff --git a/src/nm-cloud-setup/nmcs-provider-ec2.c b/src/nm-cloud-setup/nmcs-provider-ec2.c index 49777106b6..6f83238d68 100644 --- a/src/nm-cloud-setup/nmcs-provider-ec2.c +++ b/src/nm-cloud-setup/nmcs-provider-ec2.c @@ -29,22 +29,7 @@ again: * This is mainly for testing, it's not usually supposed to be configured. * Consider this private API! */ base = g_getenv(NMCS_ENV_VARIABLE("NM_CLOUD_SETUP_EC2_HOST")); - - if (!nm_str_is_empty(base)) { - if (NM_STR_HAS_PREFIX(base, "http://") || NM_STR_HAS_PREFIX(base, "https://") - || strchr(base, '/')) - base = g_intern_string(base); - else { - gs_free char *s = NULL; - - s = g_strconcat("http://", base, NULL); - base = g_intern_string(s); - } - } - if (nm_str_is_empty(base)) - base = NM_EC2_BASE; - - nm_assert(!NM_STR_HAS_SUFFIX(base, "/")); + base = nmcs_utils_uri_complete_interned(base) ?: ("" NM_EC2_BASE); if (!g_atomic_pointer_compare_and_exchange(&base_cached, NULL, base)) goto again; |