[Spice-devel] [PATCH spice-gtk 6/9] session: parse spice+unix:// URI

Marc-André Lureau marcandre.lureau at redhat.com
Tue Jan 13 08:38:25 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 6f04a1a..ecc9e86 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 = g_strdup(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;
@@ -489,14 +495,17 @@ static int spice_parse_uri(SpiceSession *session, const char *original_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 = path;
     s->host = host;
     s->port = port;
     s->tls_port = tls_port;
@@ -507,6 +516,7 @@ static int spice_parse_uri(SpiceSession *session, const char *original_uri)
 fail:
     g_free(uri);
     g_free(unescaped_path);
+    g_free(path);
     g_free(host);
     g_free(port);
     g_free(tls_port);
-- 
2.1.0



More information about the Spice-devel mailing list