[Spice-devel] [PATCHv2 06/10] session: parse spice+unix:// URI
Marc-André Lureau
marcandre.lureau at redhat.com
Tue Jan 27 05:53:19 PST 2015
---
gtk/spice-session.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/gtk/spice-session.c b/gtk/spice-session.c
index 03e0618..1050fd3 100644
--- a/gtk/spice-session.c
+++ b/gtk/spice-session.c
@@ -349,6 +349,7 @@ spice_session_finalize(GObject *gobject)
}
#define URI_SCHEME_SPICE "spice://"
+#define URI_SCHEME_SPICE_UNIX "spice+unix://"
#define URI_QUERY_START ";?"
#define URI_QUERY_SEP ";&"
@@ -383,10 +384,15 @@ static int spice_parse_uri(SpiceSession *session, const char *original_uri)
uri = g_strdup(original_uri);
+ if (g_str_has_prefix(uri, URI_SCHEME_SPICE_UNIX)) {
+ path = uri + strlen(URI_SCHEME_SPICE_UNIX);
+ goto end;
+ }
+
/* Break up the URI into its various parts, scheme, authority,
* path (ignored) and query
*/
- if (strncmp(uri, URI_SCHEME_SPICE, strlen(URI_SCHEME_SPICE)) != 0) {
+ if (!g_str_has_prefix(uri, URI_SCHEME_SPICE)) {
g_warning("Expected a URI scheme of '%s' in URI '%s'",
URI_SCHEME_SPICE, uri);
goto fail;
@@ -484,19 +490,23 @@ static int spice_parse_uri(SpiceSession *session, const char *original_uri)
}
}
+ path = NULL;
if (port == NULL && tls_port == NULL) {
g_warning("Missing port or tls-port in spice URI '%s'", uri);
goto fail;
}
+end:
/* parsed ok -> apply */
g_free(uri);
g_free(unescaped_path);
+ g_free(s->unix_path);
g_free(s->host);
g_free(s->port);
g_free(s->tls_port);
g_free(s->username);
g_free(s->password);
+ s->unix_path = g_strdup(path);
s->host = host;
s->port = port;
s->tls_port = tls_port;
--
2.1.0
More information about the Spice-devel
mailing list