File socat.patch of Package libvirt

Index: libvirt-0.7.2/src/remote/remote_driver.c
===================================================================
--- libvirt-0.7.2.orig/src/remote/remote_driver.c
+++ libvirt-0.7.2/src/remote/remote_driver.c
@@ -760,12 +760,29 @@ doRemoteOpen (virConnectPtr conn,
             cmd_argv[j++] = strdup ("none");
         }
         cmd_argv[j++] = strdup (priv->hostname);
-        cmd_argv[j++] = strdup (netcat ? netcat : "nc");
-        cmd_argv[j++] = strdup ("-U");
-        cmd_argv[j++] = strdup (sockname ? sockname :
-                                (flags & VIR_CONNECT_RO
-                                 ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
-                                 : LIBVIRTD_PRIV_UNIX_SOCKET));
+        if (netcat) {
+           cmd_argv[j++] = strdup (netcat);
+           cmd_argv[j++] = strdup ("-U");
+           cmd_argv[j++] = strdup (sockname ? sockname :
+                                   (flags & VIR_CONNECT_RO
+                                    ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
+                                    : LIBVIRTD_PRIV_UNIX_SOCKET));
+        } else {
+           cmd_argv[j++] = strdup ("socat");
+           cmd_argv[j++] = strdup ("-");
+
+           char *socat_addr = NULL;
+           if ((asprintf (&socat_addr, "GOPEN:%s",
+                          sockname ? sockname :
+                          (flags & VIR_CONNECT_RO
+                           ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
+                           : LIBVIRTD_PRIV_UNIX_SOCKET))) < 0) {
+              error (conn, VIR_ERR_SYSTEM_ERROR, strerror (ENOMEM));
+              goto failed;
+           }
+           cmd_argv[j++] = strdup (socat_addr);
+           VIR_FREE(socat_addr);
+        }
         cmd_argv[j++] = 0;
         assert (j == nr_args);
         for (j = 0; j < (nr_args-1); j++)
openSUSE Build Service is sponsored by