mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45:17 +00:00
Solaris portability fix from Mark Johnson. Remove use of anonymous union members
This commit is contained in:
parent
b876bf6ea5
commit
fb741174ad
@ -1,3 +1,9 @@
|
|||||||
|
Sat Sep 29 14:05:41 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
|
* src/sexpr.h, src/sexpr.c, src/virsh.c, src/xend_internal.c:
|
||||||
|
Remove use of anonymous union members in sexpr code.
|
||||||
|
* src/internal.h: Solaris portability fix (Mark Johnson)
|
||||||
|
|
||||||
Fri Sep 28 16:41:41 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
Fri Sep 28 16:41:41 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
* src/qemu_conf.c: Fix crash processing multiple <input> tags
|
* src/qemu_conf.c: Fix crash processing multiple <input> tags
|
||||||
|
@ -26,11 +26,6 @@ extern "C" {
|
|||||||
#define N_(str) dgettext(GETTEXT_PACKAGE, (str))
|
#define N_(str) dgettext(GETTEXT_PACKAGE, (str))
|
||||||
#define gettext_noop(str) (str)
|
#define gettext_noop(str) (str)
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#ifdef HAVE_ANSIDECL_H
|
|
||||||
#include <ansidecl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* String equality tests, suggested by Jim Meyering. */
|
/* String equality tests, suggested by Jim Meyering. */
|
||||||
#define STREQ(a,b) (strcmp((a),(b)) == 0)
|
#define STREQ(a,b) (strcmp((a),(b)) == 0)
|
||||||
#define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0)
|
#define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0)
|
||||||
@ -39,6 +34,15 @@ extern "C" {
|
|||||||
#define STREQLEN(a,b,n) (strncmp((a),(b),(n)) == 0)
|
#define STREQLEN(a,b,n) (strncmp((a),(b),(n)) == 0)
|
||||||
#define STRNEQLEN(a,b,n) (strncmp((a),(b),(n)) != 0)
|
#define STRNEQLEN(a,b,n) (strncmp((a),(b),(n)) != 0)
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
#define __FUNCTION__ __func__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#ifdef HAVE_ANSIDECL_H
|
||||||
|
#include <ansidecl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ATTRIBUTE_UNUSED:
|
* ATTRIBUTE_UNUSED:
|
||||||
*
|
*
|
||||||
@ -61,7 +65,7 @@ extern "C" {
|
|||||||
#else
|
#else
|
||||||
#define ATTRIBUTE_UNUSED
|
#define ATTRIBUTE_UNUSED
|
||||||
#define ATTRIBUTE_FORMAT(...)
|
#define ATTRIBUTE_FORMAT(...)
|
||||||
#endif
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO:
|
* TODO:
|
||||||
|
68
src/sexpr.c
68
src/sexpr.c
@ -80,11 +80,11 @@ sexpr_free(struct sexpr *sexpr)
|
|||||||
|
|
||||||
switch (sexpr->kind) {
|
switch (sexpr->kind) {
|
||||||
case SEXPR_CONS:
|
case SEXPR_CONS:
|
||||||
sexpr_free(sexpr->car);
|
sexpr_free(sexpr->u.s.car);
|
||||||
sexpr_free(sexpr->cdr);
|
sexpr_free(sexpr->u.s.cdr);
|
||||||
break;
|
break;
|
||||||
case SEXPR_VALUE:
|
case SEXPR_VALUE:
|
||||||
free(sexpr->value);
|
free(sexpr->u.value);
|
||||||
break;
|
break;
|
||||||
case SEXPR_NIL:
|
case SEXPR_NIL:
|
||||||
break;
|
break;
|
||||||
@ -127,12 +127,12 @@ sexpr_string(const char *str, ssize_t len)
|
|||||||
return ret;
|
return ret;
|
||||||
ret->kind = SEXPR_VALUE;
|
ret->kind = SEXPR_VALUE;
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
ret->value = strndup(str, len);
|
ret->u.value = strndup(str, len);
|
||||||
} else {
|
} else {
|
||||||
ret->value = strdup(str);
|
ret->u.value = strdup(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret->value == NULL) {
|
if (ret->u.value == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,8 +157,8 @@ sexpr_cons(struct sexpr *car, struct sexpr *cdr)
|
|||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return ret;
|
return ret;
|
||||||
ret->kind = SEXPR_CONS;
|
ret->kind = SEXPR_CONS;
|
||||||
ret->car = car;
|
ret->u.s.car = car;
|
||||||
ret->cdr = cdr;
|
ret->u.s.cdr = cdr;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -174,12 +174,12 @@ static void
|
|||||||
append(struct sexpr *lst, struct sexpr *value)
|
append(struct sexpr *lst, struct sexpr *value)
|
||||||
{
|
{
|
||||||
while (lst->kind != SEXPR_NIL) {
|
while (lst->kind != SEXPR_NIL) {
|
||||||
lst = lst->cdr;
|
lst = lst->u.s.cdr;
|
||||||
}
|
}
|
||||||
|
|
||||||
lst->kind = SEXPR_CONS;
|
lst->kind = SEXPR_CONS;
|
||||||
lst->car = value;
|
lst->u.s.car = value;
|
||||||
lst->cdr = sexpr_nil();
|
lst->u.s.cdr = sexpr_nil();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -228,18 +228,18 @@ sexpr2string(struct sexpr * sexpr, char *buffer, size_t n_buffer)
|
|||||||
if (tmp == 0)
|
if (tmp == 0)
|
||||||
goto error;
|
goto error;
|
||||||
ret += tmp;
|
ret += tmp;
|
||||||
tmp = sexpr2string(sexpr->car, buffer + ret, n_buffer - ret);
|
tmp = sexpr2string(sexpr->u.s.car, buffer + ret, n_buffer - ret);
|
||||||
if (tmp == 0)
|
if (tmp == 0)
|
||||||
goto error;
|
goto error;
|
||||||
ret += tmp;
|
ret += tmp;
|
||||||
while (sexpr->cdr->kind != SEXPR_NIL) {
|
while (sexpr->u.s.cdr->kind != SEXPR_NIL) {
|
||||||
sexpr = sexpr->cdr;
|
sexpr = sexpr->u.s.cdr;
|
||||||
tmp = snprintf(buffer + ret, n_buffer - ret, " ");
|
tmp = snprintf(buffer + ret, n_buffer - ret, " ");
|
||||||
if (tmp == 0)
|
if (tmp == 0)
|
||||||
goto error;
|
goto error;
|
||||||
ret += tmp;
|
ret += tmp;
|
||||||
tmp =
|
tmp =
|
||||||
sexpr2string(sexpr->car, buffer + ret, n_buffer - ret);
|
sexpr2string(sexpr->u.s.car, buffer + ret, n_buffer - ret);
|
||||||
if (tmp == 0)
|
if (tmp == 0)
|
||||||
goto error;
|
goto error;
|
||||||
ret += tmp;
|
ret += tmp;
|
||||||
@ -250,12 +250,12 @@ sexpr2string(struct sexpr * sexpr, char *buffer, size_t n_buffer)
|
|||||||
ret += tmp;
|
ret += tmp;
|
||||||
break;
|
break;
|
||||||
case SEXPR_VALUE:
|
case SEXPR_VALUE:
|
||||||
if (strchr(sexpr->value, ' '))
|
if (strchr(sexpr->u.value, ' '))
|
||||||
tmp = snprintf(buffer + ret, n_buffer - ret, "'%s'",
|
tmp = snprintf(buffer + ret, n_buffer - ret, "'%s'",
|
||||||
sexpr->value);
|
sexpr->u.value);
|
||||||
else
|
else
|
||||||
tmp = snprintf(buffer + ret, n_buffer - ret, "%s",
|
tmp = snprintf(buffer + ret, n_buffer - ret, "%s",
|
||||||
sexpr->value);
|
sexpr->u.value);
|
||||||
if (tmp == 0)
|
if (tmp == 0)
|
||||||
goto error;
|
goto error;
|
||||||
ret += tmp;
|
ret += tmp;
|
||||||
@ -346,8 +346,8 @@ _string2sexpr(const char *buffer, size_t * end)
|
|||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret->value = strndup(start, ptr - start);
|
ret->u.value = strndup(start, ptr - start);
|
||||||
if (ret->value == NULL) {
|
if (ret->u.value == NULL) {
|
||||||
virSexprError(VIR_ERR_NO_MEMORY,
|
virSexprError(VIR_ERR_NO_MEMORY,
|
||||||
_("failed to copy a string"));
|
_("failed to copy a string"));
|
||||||
}
|
}
|
||||||
@ -361,15 +361,15 @@ _string2sexpr(const char *buffer, size_t * end)
|
|||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret->value = strndup(start, ptr - start);
|
ret->u.value = strndup(start, ptr - start);
|
||||||
if (ret->value == NULL) {
|
if (ret->u.value == NULL) {
|
||||||
virSexprError(VIR_ERR_NO_MEMORY,
|
virSexprError(VIR_ERR_NO_MEMORY,
|
||||||
_("failed to copy a string"));
|
_("failed to copy a string"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret->kind = SEXPR_VALUE;
|
ret->kind = SEXPR_VALUE;
|
||||||
if (ret->value == NULL)
|
if (ret->u.value == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -426,11 +426,11 @@ sexpr_lookup(struct sexpr *sexpr, const char *node)
|
|||||||
ptr = buffer;
|
ptr = buffer;
|
||||||
token = strsep(&ptr, "/");
|
token = strsep(&ptr, "/");
|
||||||
|
|
||||||
if (sexpr->kind != SEXPR_CONS || sexpr->car->kind != SEXPR_VALUE) {
|
if (sexpr->kind != SEXPR_CONS || sexpr->u.s.car->kind != SEXPR_VALUE) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(sexpr->car->value, token) != 0) {
|
if (strcmp(sexpr->u.s.car->u.value, token) != 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,16 +440,16 @@ sexpr_lookup(struct sexpr *sexpr, const char *node)
|
|||||||
if (token == NULL)
|
if (token == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sexpr = sexpr->cdr;
|
sexpr = sexpr->u.s.cdr;
|
||||||
for (i = sexpr; i->kind != SEXPR_NIL; i = i->cdr) {
|
for (i = sexpr; i->kind != SEXPR_NIL; i = i->u.s.cdr) {
|
||||||
if (i->kind != SEXPR_CONS ||
|
if (i->kind != SEXPR_CONS ||
|
||||||
i->car->kind != SEXPR_CONS ||
|
i->u.s.car->kind != SEXPR_CONS ||
|
||||||
i->car->car->kind != SEXPR_VALUE) {
|
i->u.s.car->u.s.car->kind != SEXPR_VALUE) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(i->car->car->value, token) == 0) {
|
if (strcmp(i->u.s.car->u.s.car->u.value, token) == 0) {
|
||||||
sexpr = i->car;
|
sexpr = i->u.s.car;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -463,10 +463,10 @@ sexpr_lookup(struct sexpr *sexpr, const char *node)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sexpr->kind != SEXPR_CONS || sexpr->cdr->kind != SEXPR_CONS)
|
if (sexpr->kind != SEXPR_CONS || sexpr->u.s.cdr->kind != SEXPR_CONS)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return sexpr->cdr;
|
return sexpr->u.s.cdr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -484,7 +484,7 @@ sexpr_node(struct sexpr *sexpr, const char *node)
|
|||||||
{
|
{
|
||||||
struct sexpr *n = sexpr_lookup(sexpr, node);
|
struct sexpr *n = sexpr_lookup(sexpr, node);
|
||||||
|
|
||||||
return (n && n->car->kind == SEXPR_VALUE) ? n->car->value : NULL;
|
return (n && n->u.s.car->kind == SEXPR_VALUE) ? n->u.s.car->u.value : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,9 +29,9 @@ struct sexpr {
|
|||||||
struct {
|
struct {
|
||||||
struct sexpr *car;
|
struct sexpr *car;
|
||||||
struct sexpr *cdr;
|
struct sexpr *cdr;
|
||||||
};
|
} s;
|
||||||
char *value;
|
char *value;
|
||||||
};
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* conversion to/from strings */
|
/* conversion to/from strings */
|
||||||
|
10
src/virsh.c
10
src/virsh.c
@ -4338,9 +4338,9 @@ vshDomainStateToString(int state)
|
|||||||
case VIR_DOMAIN_CRASHED:
|
case VIR_DOMAIN_CRASHED:
|
||||||
return gettext_noop("crashed");
|
return gettext_noop("crashed");
|
||||||
default:
|
default:
|
||||||
return gettext_noop("no state"); /* = dom0 state */
|
;/*FALLTHROUGH*/
|
||||||
}
|
}
|
||||||
return NULL;
|
return gettext_noop("no state"); /* = dom0 state */
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
@ -4354,9 +4354,9 @@ vshDomainVcpuStateToString(int state)
|
|||||||
case VIR_VCPU_RUNNING:
|
case VIR_VCPU_RUNNING:
|
||||||
return gettext_noop("running");
|
return gettext_noop("running");
|
||||||
default:
|
default:
|
||||||
return gettext_noop("no state");
|
;/*FALLTHROUGH*/
|
||||||
}
|
}
|
||||||
return NULL;
|
return gettext_noop("no state");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -4868,7 +4868,7 @@ vshParseArgv(vshControl * ctl, int argc, char **argv)
|
|||||||
}
|
}
|
||||||
last = argv[i];
|
last = argv[i];
|
||||||
}
|
}
|
||||||
end = end ? : argc;
|
end = end ? end : argc;
|
||||||
|
|
||||||
/* standard (non-command) options */
|
/* standard (non-command) options */
|
||||||
while ((arg = getopt_long(end, argv, "d:hqtc:vrl:", opt, &idx)) != -1) {
|
while ((arg = getopt_long(end, argv, "d:hqtc:vrl:", opt, &idx)) != -1) {
|
||||||
|
@ -190,9 +190,9 @@ virXendErrorInt(virConnectPtr conn, virErrorNumber error, int val)
|
|||||||
|
|
||||||
|
|
||||||
#define foreach(iterator, start) \
|
#define foreach(iterator, start) \
|
||||||
for (_for_i = (start), *iterator = (start)->car; \
|
for (_for_i = (start), *iterator = (start)->u.s.car; \
|
||||||
_for_i->kind == SEXPR_CONS; \
|
_for_i->kind == SEXPR_CONS; \
|
||||||
_for_i = _for_i->cdr, iterator = _for_i->car)
|
_for_i = _for_i->u.s.cdr, iterator = _for_i->u.s.car)
|
||||||
|
|
||||||
#define foreach_node(iterator, start, path) \
|
#define foreach_node(iterator, start, path) \
|
||||||
foreach(iterator, start) \
|
foreach(iterator, start) \
|
||||||
@ -662,23 +662,22 @@ xend_node_op(virConnectPtr xend, const char *path, const char *key, ...)
|
|||||||
* Returns 0 in case of success, -1 in case of failure.
|
* Returns 0 in case of success, -1 in case of failure.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xend_op_ext(virConnectPtr xend, const char *name, char *error,
|
xend_op(virConnectPtr xend, const char *name, const char *key, ...)
|
||||||
size_t n_error, const char *key, ...)
|
|
||||||
{
|
{
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
|
char error[1024];
|
||||||
va_list ap;
|
va_list ap;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
snprintf(buffer, sizeof(buffer), "/xend/domain/%s", name);
|
snprintf(buffer, sizeof(buffer), "/xend/domain/%s", name);
|
||||||
|
|
||||||
va_start(ap, key);
|
va_start(ap, key);
|
||||||
ret = xend_op_ext2(xend, buffer, error, n_error, key, ap);
|
ret = xend_op_ext2(xend, buffer, error, sizeof(error), key, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define xend_op(xend, name, key, ...) ({char error[1024]; xend_op_ext(xend, name, error, sizeof(error), key, __VA_ARGS__);})
|
|
||||||
#endif /* ! PROXY */
|
#endif /* ! PROXY */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -961,11 +960,11 @@ xenDaemonListDomainsOld(virConnectPtr xend)
|
|||||||
if (root == NULL)
|
if (root == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
for (_for_i = root, node = root->car; _for_i->kind == SEXPR_CONS;
|
for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS;
|
||||||
_for_i = _for_i->cdr, node = _for_i->car) {
|
_for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) {
|
||||||
if (node->kind != SEXPR_VALUE)
|
if (node->kind != SEXPR_VALUE)
|
||||||
continue;
|
continue;
|
||||||
extra += strlen(node->value) + 1;
|
extra += strlen(node->u.value) + 1;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -977,13 +976,13 @@ xenDaemonListDomainsOld(virConnectPtr xend)
|
|||||||
ptr += sizeof(char *) * (count + 1);
|
ptr += sizeof(char *) * (count + 1);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
for (_for_i = root, node = root->car; _for_i->kind == SEXPR_CONS;
|
for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS;
|
||||||
_for_i = _for_i->cdr, node = _for_i->car) {
|
_for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) {
|
||||||
if (node->kind != SEXPR_VALUE)
|
if (node->kind != SEXPR_VALUE)
|
||||||
continue;
|
continue;
|
||||||
ret[i] = ptr;
|
ret[i] = ptr;
|
||||||
strcpy(ptr, node->value);
|
strcpy(ptr, node->u.value);
|
||||||
ptr += strlen(node->value) + 1;
|
ptr += strlen(node->u.value) + 1;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1462,8 +1461,8 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
|
|||||||
if ((tmp != NULL) && (tmp[0] != 0))
|
if ((tmp != NULL) && (tmp[0] != 0))
|
||||||
virBufferVSprintf(&buf, " <emulator>%s</emulator>\n", tmp);
|
virBufferVSprintf(&buf, " <emulator>%s</emulator>\n", tmp);
|
||||||
|
|
||||||
for (cur = root; cur->kind == SEXPR_CONS; cur = cur->cdr) {
|
for (cur = root; cur->kind == SEXPR_CONS; cur = cur->u.s.cdr) {
|
||||||
node = cur->car;
|
node = cur->u.s.car;
|
||||||
/* Normally disks are in a (device (vbd ...)) block
|
/* Normally disks are in a (device (vbd ...)) block
|
||||||
but blktap disks ended up in a differently named
|
but blktap disks ended up in a differently named
|
||||||
(device (tap ....)) block.... */
|
(device (tap ....)) block.... */
|
||||||
@ -1702,8 +1701,8 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
|
|||||||
|
|
||||||
/* in case of HVM we have devices emulation */
|
/* in case of HVM we have devices emulation */
|
||||||
if (hvm) {
|
if (hvm) {
|
||||||
for (cur = sexpr_lookup(root, "domain/image/hvm"); cur && cur->kind == SEXPR_CONS; cur = cur->cdr) {
|
for (cur = sexpr_lookup(root, "domain/image/hvm"); cur && cur->kind == SEXPR_CONS; cur = cur->u.s.cdr) {
|
||||||
node = cur->car;
|
node = cur->u.s.car;
|
||||||
if (sexpr_lookup(node, "usbdevice")) {
|
if (sexpr_lookup(node, "usbdevice")) {
|
||||||
tmp = sexpr_node(node, "usbdevice");
|
tmp = sexpr_node(node, "usbdevice");
|
||||||
if (tmp && *tmp) {
|
if (tmp && *tmp) {
|
||||||
@ -2903,11 +2902,11 @@ xenDaemonListDomains(virConnectPtr conn, int *ids, int maxids)
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
for (_for_i = root, node = root->car; _for_i->kind == SEXPR_CONS;
|
for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS;
|
||||||
_for_i = _for_i->cdr, node = _for_i->car) {
|
_for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) {
|
||||||
if (node->kind != SEXPR_VALUE)
|
if (node->kind != SEXPR_VALUE)
|
||||||
continue;
|
continue;
|
||||||
id = xenDaemonDomainLookupByName_ids(conn, node->value, NULL);
|
id = xenDaemonDomainLookupByName_ids(conn, node->u.value, NULL);
|
||||||
if (id >= 0)
|
if (id >= 0)
|
||||||
ids[ret++] = (int) id;
|
ids[ret++] = (int) id;
|
||||||
if (ret >= maxids)
|
if (ret >= maxids)
|
||||||
@ -2941,8 +2940,8 @@ xenDaemonNumOfDomains(virConnectPtr conn)
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
for (_for_i = root, node = root->car; _for_i->kind == SEXPR_CONS;
|
for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS;
|
||||||
_for_i = _for_i->cdr, node = _for_i->car) {
|
_for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) {
|
||||||
if (node->kind != SEXPR_VALUE)
|
if (node->kind != SEXPR_VALUE)
|
||||||
continue;
|
continue;
|
||||||
ret++;
|
ret++;
|
||||||
@ -3110,11 +3109,11 @@ xenDaemonDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
|
|||||||
memset(cpumaps, 0, maxinfo * maplen);
|
memset(cpumaps, 0, maxinfo * maplen);
|
||||||
|
|
||||||
/* scan the sexprs from "(vcpu (number x)...)" and get parameter values */
|
/* scan the sexprs from "(vcpu (number x)...)" and get parameter values */
|
||||||
for (s = root; s->kind == SEXPR_CONS; s = s->cdr) {
|
for (s = root; s->kind == SEXPR_CONS; s = s->u.s.cdr) {
|
||||||
if ((s->car->kind == SEXPR_CONS) &&
|
if ((s->u.s.car->kind == SEXPR_CONS) &&
|
||||||
(s->car->car->kind == SEXPR_VALUE) &&
|
(s->u.s.car->u.s.car->kind == SEXPR_VALUE) &&
|
||||||
!strcmp(s->car->car->value, "vcpu")) {
|
!strcmp(s->u.s.car->u.s.car->u.value, "vcpu")) {
|
||||||
t = s->car;
|
t = s->u.s.car;
|
||||||
vcpu = ipt->number = sexpr_int(t, "vcpu/number");
|
vcpu = ipt->number = sexpr_int(t, "vcpu/number");
|
||||||
if ((oln = sexpr_int(t, "vcpu/online")) != 0) {
|
if ((oln = sexpr_int(t, "vcpu/online")) != 0) {
|
||||||
if (sexpr_int(t, "vcpu/running")) ipt->state = VIR_VCPU_RUNNING;
|
if (sexpr_int(t, "vcpu/running")) ipt->state = VIR_VCPU_RUNNING;
|
||||||
@ -3131,14 +3130,14 @@ xenDaemonDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
|
|||||||
* get sexpr from "(cpumap (x y z...))" and convert values
|
* get sexpr from "(cpumap (x y z...))" and convert values
|
||||||
* to bitmap
|
* to bitmap
|
||||||
*/
|
*/
|
||||||
for (t = t->cdr; t->kind == SEXPR_CONS; t = t->cdr)
|
for (t = t->u.s.cdr; t->kind == SEXPR_CONS; t = t->u.s.cdr)
|
||||||
if ((t->car->kind == SEXPR_CONS) &&
|
if ((t->u.s.car->kind == SEXPR_CONS) &&
|
||||||
(t->car->car->kind == SEXPR_VALUE) &&
|
(t->u.s.car->u.s.car->kind == SEXPR_VALUE) &&
|
||||||
!strcmp(t->car->car->value, "cpumap") &&
|
!strcmp(t->u.s.car->u.s.car->u.value, "cpumap") &&
|
||||||
(t->car->cdr->kind == SEXPR_CONS)) {
|
(t->u.s.car->u.s.cdr->kind == SEXPR_CONS)) {
|
||||||
for (t = t->car->cdr->car; t->kind == SEXPR_CONS; t = t->cdr)
|
for (t = t->u.s.car->u.s.cdr->u.s.car; t->kind == SEXPR_CONS; t = t->u.s.cdr)
|
||||||
if (t->car->kind == SEXPR_VALUE) {
|
if (t->u.s.car->kind == SEXPR_VALUE) {
|
||||||
cpu = strtol(t->car->value, NULL, 0);
|
cpu = strtol(t->u.s.car->u.value, NULL, 0);
|
||||||
if (cpu >= 0 && (VIR_CPU_MAPLEN(cpu+1) <= maplen)) {
|
if (cpu >= 0 && (VIR_CPU_MAPLEN(cpu+1) <= maplen)) {
|
||||||
VIR_USE_CPU(cpumap, cpu);
|
VIR_USE_CPU(cpumap, cpu);
|
||||||
}
|
}
|
||||||
@ -3660,8 +3659,8 @@ xenDaemonNumOfDefinedDomains(virConnectPtr conn)
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
for (_for_i = root, node = root->car; _for_i->kind == SEXPR_CONS;
|
for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS;
|
||||||
_for_i = _for_i->cdr, node = _for_i->car) {
|
_for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) {
|
||||||
if (node->kind != SEXPR_VALUE)
|
if (node->kind != SEXPR_VALUE)
|
||||||
continue;
|
continue;
|
||||||
ret++;
|
ret++;
|
||||||
@ -3690,12 +3689,12 @@ int xenDaemonListDefinedDomains(virConnectPtr conn, char **const names, int maxn
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
for (_for_i = root, node = root->car; _for_i->kind == SEXPR_CONS;
|
for (_for_i = root, node = root->u.s.car; _for_i->kind == SEXPR_CONS;
|
||||||
_for_i = _for_i->cdr, node = _for_i->car) {
|
_for_i = _for_i->u.s.cdr, node = _for_i->u.s.car) {
|
||||||
if (node->kind != SEXPR_VALUE)
|
if (node->kind != SEXPR_VALUE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
names[ret++] = strdup(node->value);
|
names[ret++] = strdup(node->u.value);
|
||||||
if (ret >= maxnames)
|
if (ret >= maxnames)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user