mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
cleaning up integer string parsing
* src/openvz_conf.c src/openvz_driver.c: patch from Evgeniy Sokolov cleaning up integer string parsing. Daniel
This commit is contained in:
parent
f92e0898d3
commit
7e73b8b61a
@ -1,3 +1,8 @@
|
||||
Mon Jul 21 15:31:52 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/openvz_conf.c src/openvz_driver.c: patch from Evgeniy Sokolov
|
||||
cleaning up integer string parsing.
|
||||
|
||||
Mon Jul 21 11:47:08 CEST 2008 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* src/xen_unified.c: fix a leak in xenUnifiedOpen
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include "uuid.h"
|
||||
#include "buf.h"
|
||||
#include "memory.h"
|
||||
#include "util.h"
|
||||
|
||||
static char *openvzLocateConfDir(void);
|
||||
static struct openvz_vm_def *openvzParseXML(virConnectPtr conn, xmlDocPtr xml);
|
||||
@ -127,17 +128,11 @@ struct openvz_vm
|
||||
int
|
||||
strtoI(const char *str)
|
||||
{
|
||||
int base = 10;
|
||||
char *endptr;
|
||||
int val;
|
||||
|
||||
val = (int) strtol(str, &endptr, base);
|
||||
if (virStrToLong_i(str, NULL, 10, &val) < 0)
|
||||
return 0 ;
|
||||
|
||||
/* Check for various possible errors */
|
||||
if ((endptr == str) /* "No digits were found" */
|
||||
||((*endptr != '\0')
|
||||
&& (*endptr != ' ')) /*"Name contain characters other than integers" */ )
|
||||
return 0;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -449,7 +449,7 @@ openvzDomainCreateLinux(virConnectPtr conn, const char *xml,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
sscanf(vmdef->name, "%d", &vm->vpsid);
|
||||
vm->vpsid = strtoI(vmdef->name);
|
||||
vm->status = VIR_DOMAIN_RUNNING;
|
||||
ovz_driver.num_inactive--;
|
||||
ovz_driver.num_active++;
|
||||
@ -487,7 +487,7 @@ openvzDomainCreate(virDomainPtr dom)
|
||||
return -1;
|
||||
}
|
||||
|
||||
sscanf(vm->vmdef->name, "%d", &vm->vpsid);
|
||||
vm->vpsid = strtoI(vm->vmdef->name);
|
||||
vm->status = VIR_DOMAIN_RUNNING;
|
||||
ovz_driver.num_inactive --;
|
||||
ovz_driver.num_active ++;
|
||||
@ -648,6 +648,7 @@ static int openvzListDomains(virConnectPtr conn, int *ids, int nids) {
|
||||
int veid, pid, outfd, errfd;
|
||||
int ret;
|
||||
char buf[32];
|
||||
char *endptr;
|
||||
const char *cmd[] = {VZLIST, "-ovpsid", "-H" , NULL};
|
||||
|
||||
ret = virExec(conn, (char **)cmd, &pid, -1, &outfd, &errfd);
|
||||
@ -660,7 +661,11 @@ static int openvzListDomains(virConnectPtr conn, int *ids, int nids) {
|
||||
while(got < nids){
|
||||
ret = openvz_readline(outfd, buf, 32);
|
||||
if(!ret) break;
|
||||
sscanf(buf, "%d", &veid);
|
||||
if (virStrToLong_i(buf, &endptr, 10, &veid) < 0) {
|
||||
openvzError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
_("Could not parse VPS ID %s"), buf);
|
||||
continue;
|
||||
}
|
||||
ids[got] = veid;
|
||||
got ++;
|
||||
}
|
||||
@ -679,6 +684,7 @@ static int openvzListDefinedDomains(virConnectPtr conn,
|
||||
int veid, pid, outfd, errfd, ret;
|
||||
char vpsname[OPENVZ_NAME_MAX];
|
||||
char buf[32];
|
||||
char *endptr;
|
||||
const char *cmd[] = {VZLIST, "-ovpsid", "-H", "-S", NULL};
|
||||
|
||||
/* the -S options lists only stopped domains */
|
||||
@ -692,7 +698,11 @@ static int openvzListDefinedDomains(virConnectPtr conn,
|
||||
while(got < nnames){
|
||||
ret = openvz_readline(outfd, buf, 32);
|
||||
if(!ret) break;
|
||||
sscanf(buf, "%d\n", &veid);
|
||||
if (virStrToLong_i(buf, &endptr, 10, &veid) < 0) {
|
||||
openvzError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
_("Could not parse VPS ID %s"), buf);
|
||||
continue;
|
||||
}
|
||||
sprintf(vpsname, "%d", veid);
|
||||
names[got] = strdup(vpsname);
|
||||
got ++;
|
||||
|
Loading…
Reference in New Issue
Block a user