}
+static int
+virDomainChrSourceDefParseFile(virDomainChrSourceDefPtr def,
+ xmlNodePtr source)
+{
+ char *append = NULL;
+
+ def->data.file.path = virXMLPropString(source, "path");
+
+ if ((append = virXMLPropString(source, "append")) &&
+ (def->data.file.append = virTristateSwitchTypeFromString(append)) <= 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Invalid append attribute value '%s'"),
+ append);
+ VIR_FREE(append);
+ return -1;
+ }
+
+ VIR_FREE(append);
+ return 0;
+}
+
+
static int
virDomainChrSourceDefParseProtocol(virDomainChrSourceDefPtr def,
xmlNodePtr protocol)
int nvmSeclabels)
{
int ret = -1;
- char *append = NULL;
bool logParsed = false;
bool protocolParsed = false;
int sourceParsed = 0;
switch ((virDomainChrType) def->type) {
case VIR_DOMAIN_CHR_TYPE_FILE:
+ if (virDomainChrSourceDefParseFile(def, cur) < 0)
+ goto error;
+ break;
+
case VIR_DOMAIN_CHR_TYPE_PTY:
case VIR_DOMAIN_CHR_TYPE_DEV:
case VIR_DOMAIN_CHR_TYPE_PIPE:
- if (!append && def->type == VIR_DOMAIN_CHR_TYPE_FILE)
- append = virXMLPropString(cur, "append");
/* PTY path is only parsed from live xml. */
if (def->type != VIR_DOMAIN_CHR_TYPE_PTY ||
!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE))
case VIR_DOMAIN_CHR_TYPE_PTY:
case VIR_DOMAIN_CHR_TYPE_DEV:
case VIR_DOMAIN_CHR_TYPE_PIPE:
- if (append && def->type == VIR_DOMAIN_CHR_TYPE_FILE &&
- (def->data.file.append = virTristateSwitchTypeFromString(append)) <= 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Invalid append attribute value '%s'"), append);
- goto error;
- }
if (!def->data.file.path &&
def->type != VIR_DOMAIN_CHR_TYPE_PTY) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
ret = 0;
cleanup:
- VIR_FREE(append);
-
return ret;
error: