libxl: remove xs_writev function

It isn't actually being used to write a vector at the only callsite
and can easily be implemented using xs_write.

Furthermore the old implementation used to leak both the key and value
strings.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
This commit is contained in:
Ian Campbell committed 2010-10-13 11:54:04 +01:00
1 parent ab223ad3d6
commit f51aae032a
3 files changed
+14 -32

No files matched your search

+14 -10
View File
@@ -1409,22 +1409,26 @@ static char ** libxl_build_device_model_args(libxl__gc *gc,
static void dm_xenstore_record_pid(void *for_spawn, pid_t innerchild)
{
libxl_device_model_starting *starting = for_spawn;
char *kvs[3];
int rc;
struct xs_handle *xsh;
char *path = NULL, *pid = NULL;
int len;
if (asprintf(&path, "%s/%s", starting->dom_path, "image/device-model-pid") < 0)
goto out;
len = asprintf(&pid, "%d", innerchild);
if (len < 0)
goto out;
xsh = xs_daemon_open();
/* we mustn't use the parent's handle in the child */
xsh = xs_daemon_open();
kvs[0] = "image/device-model-pid";
if (asprintf(&kvs[1], "%d", innerchild) < 0)
return;
kvs[2] = NULL;
xs_write(xsh, XBT_NULL, path, pid, len);
rc = xs_writev(xsh, XBT_NULL, starting->dom_path, kvs);
if (rc)
return;
xs_daemon_close(xsh);
out:
free(path);
free(pid);
}
static int libxl_vfb_and_vkb_from_device_model_info(libxl_ctx *ctx,
-2
View File
@@ -109,8 +109,6 @@ typedef struct {
#define PRINTF_ATTRIBUTE(x, y) __attribute__((format(printf, x, y)))
_hidden int xs_writev(struct xs_handle *xsh, xs_transaction_t t, char *dir, char *kvs[]);
typedef struct {
/* mini-GC */
int alloc_maxsize;
-20
View File
@@ -24,26 +24,6 @@
#include "libxl.h"
#include "libxl_internal.h"
int xs_writev(struct xs_handle *xsh, xs_transaction_t t, char *dir, char *kvs[])
{
char *path;
int i;
if (!kvs)
return 0;
for (i = 0; kvs[i] != NULL; i += 2) {
if (asprintf(&path, "%s/%s", dir, kvs[i]) < 0)
return -1;
if (path && kvs[i + 1]) {
int length = strlen(kvs[i + 1]);
xs_write(xsh, t, path, kvs[i + 1], length);
}
free(path);
}
return 0;
}
char **libxl__xs_kvs_of_flexarray(libxl__gc *gc, flexarray_t *array, int length)
{
char **kvs;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.