> +static int qemu_gluster_parseuri(GlusterConf *gconf, const char *filename) > +{ > + URI *uri; > + QueryParams *qp = NULL; > + bool is_unix = false; > + int ret = 0; > + char *unescape_str = NULL; > + > + uri = uri_parse(filename); > + if (!uri) { > + return -EINVAL; > + } > + > + /* transport */ > + if (!strcmp(uri->scheme, "gluster")) { > + gconf->transport = g_strdup("tcp"); > + } else if (!strcmp(uri->scheme, "gluster+tcp")) { > + gconf->transport = g_strdup("tcp"); > + } else if (!strcmp(uri->scheme, "gluster+unix")) { > + gconf->transport = g_strdup("unix"); > + is_unix = true; > + } else if (!strcmp(uri->scheme, "gluster+rdma")) { > + gconf->transport = g_strdup("rdma"); > + } else { > + ret = -EINVAL; > + goto out; > + } > + > + ret = parse_volume_options(gconf, uri->path); > + if (ret < 0) { > + goto out; > + } > + > + if (uri->query) { > + unescape_str = uri_string_unescape(uri->query, -1, NULL); > + if (!unescape_str) { > + ret = -EINVAL; > + goto out; > + } > + } > + > + qp = query_params_parse(unescape_str);
query_params_parse already does the unescaping. Paolo