[glib: 11/13] gio: remove _g_uri_parse_authority()
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 11/13] gio: remove _g_uri_parse_authority()
- Date: Wed, 5 Aug 2020 16:06:03 +0000 (UTC)
commit dd0fae13031cd61a866934fbc68e715ada3cf4ad
Author: Marc-André Lureau <marcandre lureau redhat com>
Date: Tue Jul 7 13:04:02 2020 +0400
gio: remove _g_uri_parse_authority()
It is now unused and redundant with GUri.
Fixes: #2156
Signed-off-by: Marc-André Lureau <marcandre lureau redhat com>
gio/gnetworkaddress.c | 246 -----------------------------------------------
gio/gnetworkingprivate.h | 6 --
2 files changed, 252 deletions(-)
---
diff --git a/gio/gnetworkaddress.c b/gio/gnetworkaddress.c
index 2fa10733e..a93bafa36 100644
--- a/gio/gnetworkaddress.c
+++ b/gio/gnetworkaddress.c
@@ -518,252 +518,6 @@ g_network_address_parse (const gchar *host_and_port,
return connectable;
}
-/* Allowed characters outside alphanumeric for unreserved. */
-#define G_URI_OTHER_UNRESERVED "-._~"
-
-/* This or something equivalent will eventually go into glib/guri.h */
-gboolean
-_g_uri_parse_authority (const char *uri,
- char **host,
- guint16 *port,
- char **userinfo,
- GError **error)
-{
- char *ascii_uri, *tmp_str;
- const char *start, *p, *at, *delim;
- char c;
-
- g_return_val_if_fail (uri != NULL, FALSE);
-
- if (host)
- *host = NULL;
-
- if (port)
- *port = 0;
-
- if (userinfo)
- *userinfo = NULL;
-
- /* Catch broken URIs early by trying to convert to ASCII. */
- ascii_uri = g_hostname_to_ascii (uri);
- if (!ascii_uri)
- goto error;
-
- /* From RFC 3986 Decodes:
- * URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
- * hier-part = "//" authority path-abempty
- * path-abempty = *( "/" segment )
- * authority = [ userinfo "@" ] host [ ":" port ]
- */
-
- /* Check we have a valid scheme */
- tmp_str = g_uri_parse_scheme (ascii_uri);
-
- if (tmp_str == NULL)
- goto error;
-
- g_free (tmp_str);
-
- /* Decode hier-part:
- * hier-part = "//" authority path-abempty
- */
- p = ascii_uri;
- start = strstr (p, "//");
-
- if (start == NULL)
- goto error;
-
- start += 2;
-
- /* check if the @ sign is part of the authority before attempting to
- * decode the userinfo */
- delim = strpbrk (start, "/?#[]");
- at = strchr (start, '@');
- if (at && delim && at > delim)
- at = NULL;
-
- if (at != NULL)
- {
- /* Decode userinfo:
- * userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
- * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
- * pct-encoded = "%" HEXDIG HEXDIG
- */
- p = start;
- while (1)
- {
- c = *p++;
-
- if (c == '@')
- break;
-
- /* pct-encoded */
- if (c == '%')
- {
- if (!(g_ascii_isxdigit (p[0]) ||
- g_ascii_isxdigit (p[1])))
- goto error;
-
- p++;
-
- continue;
- }
-
- /* unreserved / sub-delims / : */
- if (!(g_ascii_isalnum (c) ||
- strchr (G_URI_OTHER_UNRESERVED, c) ||
- strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c) ||
- c == ':'))
- goto error;
- }
-
- if (userinfo)
- *userinfo = g_strndup (start, p - start - 1);
-
- start = p;
- }
- else
- {
- p = start;
- }
-
-
- /* decode host:
- * host = IP-literal / IPv4address / reg-name
- * reg-name = *( unreserved / pct-encoded / sub-delims )
- */
-
- /* If IPv6 or IPvFuture */
- if (*p == '[')
- {
- gboolean has_scope_id = FALSE, has_bad_scope_id = FALSE;
-
- start++;
- p++;
- while (1)
- {
- c = *p++;
-
- if (c == ']')
- break;
-
- if (c == '%' && !has_scope_id)
- {
- has_scope_id = TRUE;
- if (p[0] != '2' || p[1] != '5')
- has_bad_scope_id = TRUE;
- continue;
- }
-
- /* unreserved / sub-delims */
- if (!(g_ascii_isalnum (c) ||
- strchr (G_URI_OTHER_UNRESERVED, c) ||
- strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c) ||
- c == ':' ||
- c == '.'))
- goto error;
- }
-
- if (host)
- {
- if (has_bad_scope_id)
- *host = g_strndup (start, p - start - 1);
- else
- *host = g_uri_unescape_segment (start, p - 1, NULL);
- }
-
- c = *p++;
- }
- else
- {
- while (1)
- {
- c = *p++;
-
- if (c == ':' ||
- c == '/' ||
- c == '?' ||
- c == '#' ||
- c == '\0')
- break;
-
- /* pct-encoded */
- if (c == '%')
- {
- if (!(g_ascii_isxdigit (p[0]) ||
- g_ascii_isxdigit (p[1])))
- goto error;
-
- p++;
-
- continue;
- }
-
- /* unreserved / sub-delims */
- if (!(g_ascii_isalnum (c) ||
- strchr (G_URI_OTHER_UNRESERVED, c) ||
- strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c)))
- goto error;
- }
-
- if (host)
- *host = g_uri_unescape_segment (start, p - 1, NULL);
- }
-
- if (c == ':')
- {
- /* Decode port:
- * port = *DIGIT
- */
- guint tmp = 0;
-
- while (1)
- {
- c = *p++;
-
- if (c == '/' ||
- c == '?' ||
- c == '#' ||
- c == '\0')
- break;
-
- if (!g_ascii_isdigit (c))
- goto error;
-
- tmp = (tmp * 10) + (c - '0');
-
- if (tmp > 65535)
- goto error;
- }
- if (port)
- *port = (guint16) tmp;
- }
-
- g_free (ascii_uri);
-
- return TRUE;
-
-error:
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
- "Invalid URI ‘%s’", uri);
-
- if (host && *host)
- {
- g_free (*host);
- *host = NULL;
- }
-
- if (userinfo && *userinfo)
- {
- g_free (*userinfo);
- *userinfo = NULL;
- }
-
- g_free (ascii_uri);
-
- return FALSE;
-}
-
/**
* g_network_address_parse_uri:
* @uri: the hostname and optionally a port
diff --git a/gio/gnetworkingprivate.h b/gio/gnetworkingprivate.h
index 656379db3..dd8a277a5 100644
--- a/gio/gnetworkingprivate.h
+++ b/gio/gnetworkingprivate.h
@@ -23,12 +23,6 @@
G_BEGIN_DECLS
-gboolean _g_uri_parse_authority (const char *uri,
- char **host,
- guint16 *port,
- char **userinfo,
- GError **error);
-
guint64 g_resolver_get_serial (GResolver *resolver);
gint g_socket (gint domain,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]