]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Sanitize virDiscoverHostPMFeature to return a boolean
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 29 Nov 2011 14:29:28 +0000 (14:29 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 30 Nov 2011 10:12:29 +0000 (10:12 +0000)
Since virDiscoverHostPMFeature is just checking one feature,
there is no reason for it to return a bitmask. Change it to
return a boolean

* src/util/util.c, src/util/util.h: Make virDiscoverHostPMFeature
  return a boolean

src/util/util.c
src/util/util.h

index 5bd8c9116e5dc5cc7f4d84fef0828af1b8428a58..badfa3a3a61aa453cf117bf76b476ce73f752221 100644 (file)
@@ -2624,13 +2624,12 @@ virTypedParameterArrayClear(virTypedParameterPtr params, int nparams)
 
 /**
  * virDiscoverHostPMFeature:
- * @bitmask: The bitmask which should be populated with the result of
- *           the query
  * @feature: The power management feature to check whether it is supported
  *           by the host. Values could be:
  *           VIR_NODE_SUSPEND_TARGET_MEM
  *           VIR_NODE_SUSPEND_TARGET_DISK
  *           VIR_NODE_SUSPEND_TARGET_HYBRID
+ * @supported: set to true if supported, false otherwise
  *
  * Run the script 'pm-is-supported' (from the pm-utils package)
  * to find out if @feature is supported by the host.
@@ -2638,12 +2637,14 @@ virTypedParameterArrayClear(virTypedParameterPtr params, int nparams)
  * Returns 0 if the query was successful, -1 on failure.
  */
 int
-virDiscoverHostPMFeature(unsigned int *bitmask, unsigned int feature)
+virDiscoverHostPMFeature(unsigned int feature, bool *supported)
 {
     virCommandPtr cmd;
     int status;
     int ret = -1;
 
+    *supported = false;
+
     switch (feature) {
     case VIR_NODE_SUSPEND_TARGET_MEM:
         cmd = virCommandNewArgList("pm-is-supported", "--suspend", NULL);
@@ -2665,9 +2666,7 @@ virDiscoverHostPMFeature(unsigned int *bitmask, unsigned int feature)
     * Check return code of command == 0 for success
     * (i.e., the PM capability is supported)
     */
-    if (status == 0)
-        *bitmask |= 1U << feature;
-
+    *supported = (status == 0);
     ret = 0;
 
 cleanup:
@@ -2691,23 +2690,30 @@ int
 virGetPMCapabilities(unsigned int *bitmask)
 {
     int ret;
+    bool supported;
 
     *bitmask = 0;
 
     /* Check support for Suspend-to-RAM (S3) */
-    ret = virDiscoverHostPMFeature(bitmask, VIR_NODE_SUSPEND_TARGET_MEM);
+    ret = virDiscoverHostPMFeature(VIR_NODE_SUSPEND_TARGET_MEM, &supported);
     if (ret < 0)
         return -1;
+    if (supported)
+        *bitmask |= (1 << VIR_NODE_SUSPEND_TARGET_MEM);
 
     /* Check support for Suspend-to-Disk (S4) */
-    ret = virDiscoverHostPMFeature(bitmask, VIR_NODE_SUSPEND_TARGET_DISK);
+    ret = virDiscoverHostPMFeature(VIR_NODE_SUSPEND_TARGET_DISK, &supported);
     if (ret < 0)
         return -1;
+    if (supported)
+        *bitmask |= (1 << VIR_NODE_SUSPEND_TARGET_DISK);
 
     /* Check support for Hybrid-Suspend */
-    ret = virDiscoverHostPMFeature(bitmask, VIR_NODE_SUSPEND_TARGET_HYBRID);
+    ret = virDiscoverHostPMFeature(VIR_NODE_SUSPEND_TARGET_HYBRID, &supported);
     if (ret < 0)
         return -1;
+    if (supported)
+        *bitmask |= (1 << VIR_NODE_SUSPEND_TARGET_HYBRID);
 
     return 0;
 }
index 204e2b9af332d8d78f0440da558944d848dbb335..6a9de7e26fc41973374716f775589e6f102c198e 100644 (file)
@@ -263,7 +263,7 @@ void virTypedParameterArrayClear(virTypedParameterPtr params, int nparams);
 
 /* Power Management Capabilities of the host system */
 
-int virDiscoverHostPMFeature(unsigned int *bitmask, unsigned int feature);
+int virDiscoverHostPMFeature(unsigned int feature, bool *supported);
 int virGetPMCapabilities(unsigned int *bitmask);
 
 #endif /* __VIR_UTIL_H__ */