Introduce virTristateBool enum type

Replace all three-state (default/yes/no) enums with it:
virDomainBIOSUseserial
virDomainBootMenu
virDomainPMState
virDomainGraphicsSpiceClipboardCopypaste
virDomainGraphicsSpiceAgentFileTransfer
virNetworkDNSForwardPlainNames
This commit is contained in:
Ján Tomko 2014-06-27 17:16:54 +02:00
parent 0e6cacc4b1
commit bb018ce6c8
10 changed files with 56 additions and 137 deletions

View File

@ -134,11 +134,6 @@ VIR_ENUM_IMPL(virDomainBoot, VIR_DOMAIN_BOOT_LAST,
"hd",
"network")
VIR_ENUM_IMPL(virDomainBootMenu, VIR_DOMAIN_BOOT_MENU_LAST,
"default",
"yes",
"no")
VIR_ENUM_IMPL(virDomainFeature, VIR_DOMAIN_FEATURE_LAST,
"acpi",
"apic",
@ -225,11 +220,6 @@ VIR_ENUM_IMPL(virDomainLockFailure, VIR_DOMAIN_LOCK_FAILURE_LAST,
"pause",
"ignore")
VIR_ENUM_IMPL(virDomainPMState, VIR_DOMAIN_PM_STATE_LAST,
"default",
"yes",
"no")
VIR_ENUM_IMPL(virDomainDevice, VIR_DOMAIN_DEVICE_LAST,
"none",
"disk",
@ -622,18 +612,6 @@ VIR_ENUM_IMPL(virDomainGraphicsSpiceStreamingMode,
"all",
"off");
VIR_ENUM_IMPL(virDomainGraphicsSpiceClipboardCopypaste,
VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_LAST,
"default",
"yes",
"no");
VIR_ENUM_IMPL(virDomainGraphicsSpiceAgentFileTransfer,
VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_LAST,
"default",
"yes",
"no");
VIR_ENUM_IMPL(virDomainHostdevMode, VIR_DOMAIN_HOSTDEV_MODE_LAST,
"subsystem",
"capabilities")
@ -8926,7 +8904,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
}
if ((copypasteVal =
virDomainGraphicsSpiceClipboardCopypasteTypeFromString(copypaste)) <= 0) {
virTristateBoolTypeFromString(copypaste)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown copypaste value '%s'"), copypaste);
VIR_FREE(copypaste);
@ -8946,7 +8924,7 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
}
if ((enableVal =
virDomainGraphicsSpiceAgentFileTransferTypeFromString(enable)) <= 0) {
virTristateBoolTypeFromString(enable)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown enable value '%s'"), enable);
VIR_FREE(enable);
@ -10053,7 +10031,7 @@ virDomainPMStateParseXML(xmlXPathContextPtr ctxt,
int ret = -1;
char *tmp = virXPathString(xpath, ctxt);
if (tmp) {
*val = virDomainPMStateTypeFromString(tmp);
*val = virTristateBoolTypeFromString(tmp);
if (*val < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown PM state value %s"), tmp);
@ -11016,14 +10994,14 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt,
tmp = virXPathString("string(./os/bootmenu[1]/@enable)", ctxt);
if (tmp) {
def->os.bootmenu = virDomainBootMenuTypeFromString(tmp);
def->os.bootmenu = virTristateBoolTypeFromString(tmp);
if (def->os.bootmenu <= 0) {
/* In order not to break misconfigured machines, this
* should not emit an error, but rather set the bootmenu
* to disabled */
VIR_WARN("disabling bootmenu due to unknown option '%s'",
tmp);
def->os.bootmenu = VIR_DOMAIN_BOOT_MENU_DISABLED;
def->os.bootmenu = VIR_TRISTATE_BOOL_NO;
}
VIR_FREE(tmp);
}
@ -11038,9 +11016,9 @@ virDomainDefParseBootXML(xmlXPathContextPtr ctxt,
"for useserial"));
goto cleanup;
}
def->os.bios.useserial = VIR_DOMAIN_BIOS_USESERIAL_YES;
def->os.bios.useserial = VIR_TRISTATE_BOOL_YES;
} else {
def->os.bios.useserial = VIR_DOMAIN_BIOS_USESERIAL_NO;
def->os.bios.useserial = VIR_TRISTATE_BOOL_NO;
}
VIR_FREE(tmp);
}
@ -17033,10 +17011,10 @@ virDomainGraphicsDefFormat(virBufferPtr buf,
virDomainGraphicsSpiceMouseModeTypeToString(def->data.spice.mousemode));
if (def->data.spice.copypaste)
virBufferAsprintf(buf, "<clipboard copypaste='%s'/>\n",
virDomainGraphicsSpiceClipboardCopypasteTypeToString(def->data.spice.copypaste));
virTristateBoolTypeToString(def->data.spice.copypaste));
if (def->data.spice.filetransfer)
virBufferAsprintf(buf, "<filetransfer enable='%s'/>\n",
virDomainGraphicsSpiceAgentFileTransferTypeToString(def->data.spice.filetransfer));
virTristateBoolTypeToString(def->data.spice.filetransfer));
}
if (children) {
@ -17609,20 +17587,15 @@ virDomainDefFormatInternal(virDomainDefPtr def,
virBufferAsprintf(buf, "<boot dev='%s'/>\n", boottype);
}
if (def->os.bootmenu != VIR_DOMAIN_BOOT_MENU_DEFAULT) {
const char *enabled = (def->os.bootmenu ==
VIR_DOMAIN_BOOT_MENU_ENABLED ? "yes"
: "no");
virBufferAsprintf(buf, "<bootmenu enable='%s'/>\n", enabled);
}
if (def->os.bootmenu)
virBufferAsprintf(buf, "<bootmenu enable='%s'/>\n",
virTristateBoolTypeToString(def->os.bootmenu));
if (def->os.bios.useserial || def->os.bios.rt_set) {
virBufferAddLit(buf, "<bios");
if (def->os.bios.useserial)
virBufferAsprintf(buf, " useserial='%s'",
(def->os.bios.useserial ==
VIR_DOMAIN_BIOS_USESERIAL_YES ? "yes"
: "no"));
virTristateBoolTypeToString(def->os.bios.useserial));
if (def->os.bios.rt_set)
virBufferAsprintf(buf, " rebootTimeout='%d'", def->os.bios.rt_delay);
@ -17866,11 +17839,11 @@ virDomainDefFormatInternal(virDomainDefPtr def,
virBufferAdjustIndent(buf, 2);
if (def->pm.s3) {
virBufferAsprintf(buf, "<suspend-to-mem enabled='%s'/>\n",
virDomainPMStateTypeToString(def->pm.s3));
virTristateBoolTypeToString(def->pm.s3));
}
if (def->pm.s4) {
virBufferAsprintf(buf, "<suspend-to-disk enabled='%s'/>\n",
virDomainPMStateTypeToString(def->pm.s4));
virTristateBoolTypeToString(def->pm.s4));
}
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</pm>\n");

View File

@ -1344,22 +1344,6 @@ typedef enum {
VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_LAST
} virDomainGraphicsSpiceStreamingMode;
typedef enum {
VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_DEFAULT = 0,
VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_YES,
VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_NO,
VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_LAST
} virDomainGraphicsSpiceClipboardCopypaste;
typedef enum {
VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_DEFAULT = 0,
VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_YES,
VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_NO,
VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_LAST
} virDomainGraphicsSpiceAgentFileTransfer;
typedef enum {
VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE = 0,
VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS,
@ -1432,8 +1416,8 @@ struct _virDomainGraphicsDef {
int zlib;
int playback;
int streaming;
int copypaste;
int filetransfer;
int copypaste; /* enum virTristateBool */
int filetransfer; /* enum virTristateBool */
} spice;
} data;
/* nListens, listens, and *port are only useful if type is vnc,
@ -1519,14 +1503,6 @@ typedef enum {
VIR_DOMAIN_BOOT_LAST
} virDomainBootOrder;
typedef enum {
VIR_DOMAIN_BOOT_MENU_DEFAULT = 0,
VIR_DOMAIN_BOOT_MENU_ENABLED,
VIR_DOMAIN_BOOT_MENU_DISABLED,
VIR_DOMAIN_BOOT_MENU_LAST
} virDomainBootMenu;
typedef enum {
VIR_DOMAIN_FEATURE_ACPI,
VIR_DOMAIN_FEATURE_APIC,
@ -1639,24 +1615,10 @@ typedef enum {
VIR_ENUM_DECL(virDomainLockFailure)
typedef enum {
VIR_DOMAIN_PM_STATE_DEFAULT = 0,
VIR_DOMAIN_PM_STATE_ENABLED,
VIR_DOMAIN_PM_STATE_DISABLED,
VIR_DOMAIN_PM_STATE_LAST
} virDomainPMState;
typedef enum {
VIR_DOMAIN_BIOS_USESERIAL_DEFAULT = 0,
VIR_DOMAIN_BIOS_USESERIAL_YES,
VIR_DOMAIN_BIOS_USESERIAL_NO
} virDomainBIOSUseserial;
typedef struct _virDomainBIOSDef virDomainBIOSDef;
typedef virDomainBIOSDef *virDomainBIOSDefPtr;
struct _virDomainBIOSDef {
int useserial;
int useserial; /* enum virTristateBool */
/* reboot-timeout parameters */
bool rt_set;
int rt_delay;
@ -1671,8 +1633,7 @@ struct _virDomainOSDef {
char *machine;
size_t nBootDevs;
int bootDevs[VIR_DOMAIN_BOOT_LAST];
/* enum virDomainBootMenu */
int bootmenu;
int bootmenu; /* enum virTristateBool */
char *init;
char **initargv;
char *kernel;
@ -1960,7 +1921,7 @@ struct _virDomainDef {
int onLockFailure; /* enum virDomainLockFailureAction */
struct {
/* These options are actually type of enum virDomainPMState */
/* These options are of type enum virTristateBool */
int s3;
int s4;
} pm;
@ -2588,17 +2549,14 @@ typedef const char* (*virEventActionToStringFunc)(int type);
typedef int (*virEventActionFromStringFunc)(const char *type);
VIR_ENUM_DECL(virDomainTaint)
VIR_ENUM_DECL(virDomainVirt)
VIR_ENUM_DECL(virDomainBoot)
VIR_ENUM_DECL(virDomainBootMenu)
VIR_ENUM_DECL(virDomainFeature)
VIR_ENUM_DECL(virDomainFeatureState)
VIR_ENUM_DECL(virDomainCapabilitiesPolicy)
VIR_ENUM_DECL(virDomainCapsFeature)
VIR_ENUM_DECL(virDomainLifecycle)
VIR_ENUM_DECL(virDomainLifecycleCrash)
VIR_ENUM_DECL(virDomainPMState)
VIR_ENUM_DECL(virDomainDevice)
VIR_ENUM_DECL(virDomainDeviceAddress)
VIR_ENUM_DECL(virDomainDiskDevice)
@ -2652,7 +2610,6 @@ VIR_ENUM_DECL(virDomainInputBus)
VIR_ENUM_DECL(virDomainGraphics)
VIR_ENUM_DECL(virDomainGraphicsListen)
VIR_ENUM_DECL(virDomainGraphicsAuthConnected)
VIR_ENUM_DECL(virDomainGraphicsSpiceAgentFileTransfer)
VIR_ENUM_DECL(virDomainGraphicsSpiceChannelName)
VIR_ENUM_DECL(virDomainGraphicsSpiceChannelMode)
VIR_ENUM_DECL(virDomainGraphicsSpiceImageCompression)
@ -2660,7 +2617,6 @@ VIR_ENUM_DECL(virDomainGraphicsSpiceJpegCompression)
VIR_ENUM_DECL(virDomainGraphicsSpiceZlibCompression)
VIR_ENUM_DECL(virDomainGraphicsSpicePlaybackCompression)
VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode)
VIR_ENUM_DECL(virDomainGraphicsSpiceClipboardCopypaste)
VIR_ENUM_DECL(virDomainGraphicsSpiceMouseMode)
VIR_ENUM_DECL(virDomainGraphicsVNCSharePolicy)
VIR_ENUM_DECL(virDomainHyperv)

View File

@ -66,12 +66,6 @@ VIR_ENUM_IMPL(virNetworkForwardDriverName,
"kvm",
"vfio")
VIR_ENUM_IMPL(virNetworkDNSForwardPlainNames,
VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_LAST,
"default",
"yes",
"no")
VIR_ENUM_IMPL(virNetworkTaint, VIR_NETWORK_TAINT_LAST,
"hook-script");
@ -1123,8 +1117,7 @@ virNetworkDNSDefParseXML(const char *networkName,
forwardPlainNames = virXPathString("string(./@forwardPlainNames)", ctxt);
if (forwardPlainNames) {
def->forwardPlainNames
= virNetworkDNSForwardPlainNamesTypeFromString(forwardPlainNames);
def->forwardPlainNames = virTristateBoolTypeFromString(forwardPlainNames);
if (def->forwardPlainNames <= 0) {
virReportError(VIR_ERR_XML_ERROR,
_("Invalid dns forwardPlainNames setting '%s' "
@ -2372,8 +2365,9 @@ virNetworkDNSDefFormat(virBufferPtr buf,
return 0;
virBufferAddLit(buf, "<dns");
/* default to "yes", but don't format it in the XML */
if (def->forwardPlainNames) {
const char *fwd = virNetworkDNSForwardPlainNamesTypeToString(def->forwardPlainNames);
const char *fwd = virTristateBoolTypeToString(def->forwardPlainNames);
if (!fwd) {
virReportError(VIR_ERR_INTERNAL_ERROR,

View File

@ -112,23 +112,10 @@ struct _virNetworkDNSHostDef {
char **names;
};
/* If forwardPlainNames is 0 (default), that is equivalent to "yes",
* but won't be encoded in newly formatted XML.
*/
typedef enum {
VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_DEFAULT = 0, /* silent "yes" */
VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_YES,
VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_NO,
VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_LAST,
} virNetworkDNSForwardPlainNamesType;
VIR_ENUM_DECL(virNetworkDNSForwardPlainNames)
typedef struct _virNetworkDNSDef virNetworkDNSDef;
typedef virNetworkDNSDef *virNetworkDNSDefPtr;
struct _virNetworkDNSDef {
int forwardPlainNames; /* enum virNetworkDNSForwardPlainNamesType */
int forwardPlainNames; /* enum virTristateBool */
size_t ntxts;
virNetworkDNSTxtDefPtr txts;
size_t nhosts;

View File

@ -145,8 +145,6 @@ virDiskNameToIndex;
virDomainActualNetDefFree;
virDomainBlockedReasonTypeFromString;
virDomainBlockedReasonTypeToString;
virDomainBootMenuTypeFromString;
virDomainBootMenuTypeToString;
virDomainCapabilitiesPolicyTypeToString;
virDomainCapsFeatureTypeToString;
virDomainChrConsoleTargetTypeFromString;
@ -274,14 +272,10 @@ virDomainGraphicsListenGetType;
virDomainGraphicsListenSetAddress;
virDomainGraphicsListenSetNetwork;
virDomainGraphicsListenSetType;
virDomainGraphicsSpiceAgentFileTransferTypeFromString;
virDomainGraphicsSpiceAgentFileTransferTypeToString;
virDomainGraphicsSpiceChannelModeTypeFromString;
virDomainGraphicsSpiceChannelModeTypeToString;
virDomainGraphicsSpiceChannelNameTypeFromString;
virDomainGraphicsSpiceChannelNameTypeToString;
virDomainGraphicsSpiceClipboardCopypasteTypeFromString;
virDomainGraphicsSpiceClipboardCopypasteTypeToString;
virDomainGraphicsSpiceImageCompressionTypeFromString;
virDomainGraphicsSpiceImageCompressionTypeToString;
virDomainGraphicsSpiceJpegCompressionTypeFromString;
@ -380,8 +374,6 @@ virDomainPausedReasonTypeFromString;
virDomainPausedReasonTypeToString;
virDomainPCIRombarModeTypeFromString;
virDomainPCIRombarModeTypeToString;
virDomainPMStateTypeFromString;
virDomainPMStateTypeToString;
virDomainPMSuspendedReasonTypeFromString;
virDomainPMSuspendedReasonTypeToString;
virDomainRedirdevBusTypeFromString;
@ -2159,6 +2151,8 @@ virSetSockReuseAddr;
virSetUIDGID;
virSetUIDGIDWithCaps;
virStrIsPrint;
virTristateBoolTypeFromString;
virTristateBoolTypeToString;
virUpdateSelfLastChanged;
virValidateWWN;

View File

@ -927,8 +927,7 @@ networkDnsmasqConfContents(virNetworkObjPtr network,
network->def->domain);
}
if (network->def->dns.forwardPlainNames
== VIR_NETWORK_DNS_FORWARD_PLAIN_NAMES_NO) {
if (network->def->dns.forwardPlainNames == VIR_TRISTATE_BOOL_NO) {
virBufferAddLit(&configbuf, "domain-needed\n");
/* need to specify local=// whether or not a domain is
* specified, unless the config says we should forward "plain"

View File

@ -6814,9 +6814,9 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfigPtr cfg,
if (graphics->data.spice.streaming)
virBufferAsprintf(&opt, ",streaming-video=%s",
virDomainGraphicsSpiceStreamingModeTypeToString(graphics->data.spice.streaming));
if (graphics->data.spice.copypaste == VIR_DOMAIN_GRAPHICS_SPICE_CLIPBOARD_COPYPASTE_NO)
if (graphics->data.spice.copypaste == VIR_TRISTATE_BOOL_NO)
virBufferAddLit(&opt, ",disable-copy-paste");
if (graphics->data.spice.filetransfer == VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_NO) {
if (graphics->data.spice.filetransfer == VIR_TRISTATE_BOOL_NO) {
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPICE_FILE_XFER_DISABLE)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("This QEMU can't disable file transfers through spice"));
@ -7469,7 +7469,7 @@ qemuBuildCommandLine(virConnectPtr conn,
}
/* Serial graphics adapter */
if (def->os.bios.useserial == VIR_DOMAIN_BIOS_USESERIAL_YES) {
if (def->os.bios.useserial == VIR_TRISTATE_BOOL_YES) {
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("qemu does not support -device"));
@ -7688,7 +7688,7 @@ qemuBuildCommandLine(virConnectPtr conn,
}
virCommandAddArg(cmd, "-global");
virCommandAddArgFormat(cmd, "PIIX4_PM.disable_s3=%d",
def->pm.s3 == VIR_DOMAIN_PM_STATE_DISABLED);
def->pm.s3 == VIR_TRISTATE_BOOL_NO);
}
if (def->pm.s4) {
@ -7699,7 +7699,7 @@ qemuBuildCommandLine(virConnectPtr conn,
}
virCommandAddArg(cmd, "-global");
virCommandAddArgFormat(cmd, "PIIX4_PM.disable_s4=%d",
def->pm.s4 == VIR_DOMAIN_PM_STATE_DISABLED);
def->pm.s4 == VIR_TRISTATE_BOOL_NO);
}
if (!def->os.bootloader) {
@ -7721,7 +7721,7 @@ qemuBuildCommandLine(virConnectPtr conn,
}
emitBootindex = true;
} else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOTINDEX) &&
(def->os.bootmenu != VIR_DOMAIN_BOOT_MENU_ENABLED ||
(def->os.bootmenu != VIR_TRISTATE_BOOL_YES ||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOT_MENU))) {
emitBootindex = true;
}
@ -7759,7 +7759,7 @@ qemuBuildCommandLine(virConnectPtr conn,
if (boot_nparams++)
virBufferAddChar(&boot_buf, ',');
if (def->os.bootmenu == VIR_DOMAIN_BOOT_MENU_ENABLED)
if (def->os.bootmenu == VIR_TRISTATE_BOOL_YES)
virBufferAddLit(&boot_buf, "menu=on");
else
virBufferAddLit(&boot_buf, "menu=off");
@ -11440,9 +11440,9 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
val += strlen("PIIX4_PM.disable_s3=");
if (STREQ(val, "0"))
def->pm.s3 = VIR_DOMAIN_PM_STATE_ENABLED;
def->pm.s3 = VIR_TRISTATE_BOOL_YES;
else if (STREQ(val, "1"))
def->pm.s3 = VIR_DOMAIN_PM_STATE_DISABLED;
def->pm.s3 = VIR_TRISTATE_BOOL_NO;
else {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid value for disable_s3 parameter: "
@ -11457,9 +11457,9 @@ qemuParseCommandLine(virCapsPtr qemuCaps,
val += strlen("PIIX4_PM.disable_s4=");
if (STREQ(val, "0"))
def->pm.s4 = VIR_DOMAIN_PM_STATE_ENABLED;
def->pm.s4 = VIR_TRISTATE_BOOL_YES;
else if (STREQ(val, "1"))
def->pm.s4 = VIR_DOMAIN_PM_STATE_DISABLED;
def->pm.s4 = VIR_TRISTATE_BOOL_NO;
else {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid value for disable_s4 parameter: "

View File

@ -16256,7 +16256,7 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom,
}
if (vm->def->pm.s3 || vm->def->pm.s4) {
if (vm->def->pm.s3 == VIR_DOMAIN_PM_STATE_DISABLED &&
if (vm->def->pm.s3 == VIR_TRISTATE_BOOL_NO &&
(target == VIR_NODE_SUSPEND_TARGET_MEM ||
target == VIR_NODE_SUSPEND_TARGET_HYBRID)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@ -16264,7 +16264,7 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom,
goto cleanup;
}
if (vm->def->pm.s4 == VIR_DOMAIN_PM_STATE_DISABLED &&
if (vm->def->pm.s4 == VIR_TRISTATE_BOOL_NO &&
target == VIR_NODE_SUSPEND_TARGET_DISK) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("S4 state is disabled for this domain"));

View File

@ -92,6 +92,11 @@ verify(sizeof(gid_t) <= sizeof(unsigned int) &&
VIR_LOG_INIT("util.util");
VIR_ENUM_IMPL(virTristateBool, VIR_TRISTATE_BOOL_LAST,
"default",
"yes",
"no")
#ifndef WIN32
int virSetInherit(int fd, bool inherit)

View File

@ -38,6 +38,7 @@
# define MAX(a, b) ((a) > (b) ? (a) : (b))
# endif
int virSetBlocking(int fd, bool blocking) ATTRIBUTE_RETURN_CHECK;
int virSetNonBlock(int fd) ATTRIBUTE_RETURN_CHECK;
int virSetInherit(int fd, bool inherit) ATTRIBUTE_RETURN_CHECK;
@ -211,4 +212,14 @@ bool virIsSUID(void);
time_t virGetSelfLastChanged(void);
void virUpdateSelfLastChanged(const char *path);
typedef enum {
VIR_TRISTATE_BOOL_ABSENT = 0,
VIR_TRISTATE_BOOL_YES,
VIR_TRISTATE_BOOL_NO,
VIR_TRISTATE_BOOL_LAST
} virTristateBool;
VIR_ENUM_DECL(virTristateBool)
#endif /* __VIR_UTIL_H__ */