mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Use virBuffer when building QEMU char dev command line
* src/qemu/qemu_conf.c: Update qemudBuildCommandLineChrDevStr to use a virBuffer
This commit is contained in:
parent
8f67f6448b
commit
bb4ec5550b
@ -1502,84 +1502,66 @@ static int qemudBuildCommandLineChrDevTargetStr(virDomainChrDefPtr dev,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function outputs an all-in-one character device command line option */
|
static void qemudBuildCommandLineChrDevStr(virDomainChrDefPtr dev,
|
||||||
static int qemudBuildCommandLineChrDevStr(virDomainChrDefPtr dev,
|
virBufferPtr buf)
|
||||||
char *buf,
|
|
||||||
int buflen)
|
|
||||||
{
|
{
|
||||||
switch (dev->type) {
|
switch (dev->type) {
|
||||||
case VIR_DOMAIN_CHR_TYPE_NULL:
|
case VIR_DOMAIN_CHR_TYPE_NULL:
|
||||||
if (virStrcpy(buf, "null", buflen) == NULL)
|
virBufferAddLit(buf, "null");
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_VC:
|
case VIR_DOMAIN_CHR_TYPE_VC:
|
||||||
if (virStrcpy(buf, "vc", buflen) == NULL)
|
virBufferAddLit(buf, "vc");
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_PTY:
|
case VIR_DOMAIN_CHR_TYPE_PTY:
|
||||||
if (virStrcpy(buf, "pty", buflen) == NULL)
|
virBufferAddLit(buf, "pty");
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_DEV:
|
case VIR_DOMAIN_CHR_TYPE_DEV:
|
||||||
if (snprintf(buf, buflen, "%s",
|
virBufferStrcat(buf, dev->data.file.path, NULL);
|
||||||
dev->data.file.path) >= buflen)
|
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_FILE:
|
case VIR_DOMAIN_CHR_TYPE_FILE:
|
||||||
if (snprintf(buf, buflen, "file:%s",
|
virBufferVSprintf(buf, "file:%s", dev->data.file.path);
|
||||||
dev->data.file.path) >= buflen)
|
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_PIPE:
|
case VIR_DOMAIN_CHR_TYPE_PIPE:
|
||||||
if (snprintf(buf, buflen, "pipe:%s",
|
virBufferVSprintf(buf, "pipe:%s", dev->data.file.path);
|
||||||
dev->data.file.path) >= buflen)
|
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_STDIO:
|
case VIR_DOMAIN_CHR_TYPE_STDIO:
|
||||||
if (virStrcpy(buf, "stdio", buflen) == NULL)
|
virBufferAddLit(buf, "stdio");
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_UDP:
|
case VIR_DOMAIN_CHR_TYPE_UDP:
|
||||||
if (snprintf(buf, buflen, "udp:%s:%s@%s:%s",
|
virBufferVSprintf(buf, "udp:%s:%s@%s:%s",
|
||||||
dev->data.udp.connectHost,
|
dev->data.udp.connectHost,
|
||||||
dev->data.udp.connectService,
|
dev->data.udp.connectService,
|
||||||
dev->data.udp.bindHost,
|
dev->data.udp.bindHost,
|
||||||
dev->data.udp.bindService) >= buflen)
|
dev->data.udp.bindService);
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_TCP:
|
case VIR_DOMAIN_CHR_TYPE_TCP:
|
||||||
if (dev->data.tcp.protocol == VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNET) {
|
if (dev->data.tcp.protocol == VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNET) {
|
||||||
if (snprintf(buf, buflen, "telnet:%s:%s%s",
|
virBufferVSprintf(buf, "telnet:%s:%s%s",
|
||||||
dev->data.tcp.host,
|
dev->data.tcp.host,
|
||||||
dev->data.tcp.service,
|
dev->data.tcp.service,
|
||||||
dev->data.tcp.listen ? ",server,nowait" : "") >= buflen)
|
dev->data.tcp.listen ? ",server,nowait" : "");
|
||||||
return -1;
|
|
||||||
} else {
|
} else {
|
||||||
if (snprintf(buf, buflen, "tcp:%s:%s%s",
|
virBufferVSprintf(buf, "tcp:%s:%s%s",
|
||||||
dev->data.tcp.host,
|
dev->data.tcp.host,
|
||||||
dev->data.tcp.service,
|
dev->data.tcp.service,
|
||||||
dev->data.tcp.listen ? ",server,nowait" : "") >= buflen)
|
dev->data.tcp.listen ? ",server,nowait" : "");
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
||||||
if (snprintf(buf, buflen, "unix:%s%s",
|
virBufferVSprintf(buf, "unix:%s%s",
|
||||||
dev->data.nix.path,
|
dev->data.nix.path,
|
||||||
dev->data.nix.listen ? ",server,nowait" : "") >= buflen)
|
dev->data.nix.listen ? ",server,nowait" : "");
|
||||||
return -1;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define QEMU_SERIAL_PARAM_ACCEPTED_CHARS \
|
#define QEMU_SERIAL_PARAM_ACCEPTED_CHARS \
|
||||||
@ -1867,13 +1849,14 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
|||||||
ADD_ARG_LIT("-nographic");
|
ADD_ARG_LIT("-nographic");
|
||||||
|
|
||||||
if (monitor_chr) {
|
if (monitor_chr) {
|
||||||
char buf[4096];
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
if (qemudBuildCommandLineChrDevStr(monitor_chr, buf, sizeof(buf)) < 0)
|
qemudBuildCommandLineChrDevStr(monitor_chr, &buf);
|
||||||
|
if (virBufferError(&buf))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
ADD_ARG_LIT("-monitor");
|
ADD_ARG_LIT("-monitor");
|
||||||
ADD_ARG_LIT(buf);
|
ADD_ARG(virBufferContentAndReset(&buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (def->localtime)
|
if (def->localtime)
|
||||||
@ -2153,14 +2136,15 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
|||||||
ADD_ARG_LIT("none");
|
ADD_ARG_LIT("none");
|
||||||
} else {
|
} else {
|
||||||
for (i = 0 ; i < def->nserials ; i++) {
|
for (i = 0 ; i < def->nserials ; i++) {
|
||||||
char buf[4096];
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
virDomainChrDefPtr serial = def->serials[i];
|
virDomainChrDefPtr serial = def->serials[i];
|
||||||
|
|
||||||
if (qemudBuildCommandLineChrDevStr(serial, buf, sizeof(buf)) < 0)
|
qemudBuildCommandLineChrDevStr(serial, &buf);
|
||||||
|
if (virBufferError(&buf))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
ADD_ARG_LIT("-serial");
|
ADD_ARG_LIT("-serial");
|
||||||
ADD_ARG_LIT(buf);
|
ADD_ARG(virBufferContentAndReset(&buf));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2169,14 +2153,15 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
|||||||
ADD_ARG_LIT("none");
|
ADD_ARG_LIT("none");
|
||||||
} else {
|
} else {
|
||||||
for (i = 0 ; i < def->nparallels ; i++) {
|
for (i = 0 ; i < def->nparallels ; i++) {
|
||||||
char buf[4096];
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
virDomainChrDefPtr parallel = def->parallels[i];
|
virDomainChrDefPtr parallel = def->parallels[i];
|
||||||
|
|
||||||
if (qemudBuildCommandLineChrDevStr(parallel, buf, sizeof(buf)) < 0)
|
qemudBuildCommandLineChrDevStr(parallel, &buf);
|
||||||
|
if (virBufferError(&buf))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
ADD_ARG_LIT("-parallel");
|
ADD_ARG_LIT("-parallel");
|
||||||
ADD_ARG_LIT(buf);
|
ADD_ARG(virBufferContentAndReset(&buf));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user