[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