]> xenbits.xensource.com Git - libvirt.git/commitdiff
build: Don't use code with dbus_message_unref when built without dbus
authorMartin Kletzander <mkletzan@redhat.com>
Mon, 14 Apr 2014 08:50:42 +0000 (10:50 +0200)
committerMartin Kletzander <mkletzan@redhat.com>
Mon, 14 Apr 2014 16:19:36 +0000 (18:19 +0200)
In order to do that, virNodeSuspendSupportsTargetPMUtils() and
virSystemdPMSupportTarget() are created even when pm-utils and dbus
are compiled out, respectively, but in that case returning -2 meaning
"unavailable" (this return code was already used for unavailability
before).  Error is reported in virNodeSuspendSupportsTarget() only if
both functions returned -2, otherwise the error (or success) is properly
propagated up the stack.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
src/util/virnodesuspend.c
src/util/virsystemd.c

index 59b84effe2b218a9a5acd7a72fa6d166e92ec9ba..8bb8d93d0a45a7aaae47c5d1786d9a77f6bffb71 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * virnodesuspend.c: Support for suspending a node (host machine)
  *
+ * Copyright (C) 2014 Red Hat, Inc.
  * Copyright (C) 2011 Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
  *
  * This library is free software; you can redistribute it and/or
@@ -267,7 +268,14 @@ virNodeSuspendSupportsTargetPMUtils(unsigned int target, bool *supported)
     virCommandFree(cmd);
     return ret;
 }
-#endif
+#else /* ! WITH_PM_UTILS */
+static int
+virNodeSuspendSupportsTargetPMUtils(unsigned int target ATTRIBUTE_UNUSED,
+                                    bool *supported ATTRIBUTE_UNUSED)
+{
+    return -2;
+}
+#endif /* ! WITH_PM_UTILS */
 
 static int
 virNodeSuspendSupportsTargetSystemd(unsigned int target, bool *supported)
@@ -313,10 +321,17 @@ virNodeSuspendSupportsTarget(unsigned int target, bool *supported)
     int ret;
 
     ret = virNodeSuspendSupportsTargetSystemd(target, supported);
-#ifdef WITH_PM_UTILS
-    if (ret < 0)
+
+    /* If just unavailable, try other options */
+    if (ret == -2)
         ret = virNodeSuspendSupportsTargetPMUtils(target, supported);
-#endif
+
+    /* If still unavailable, then report error */
+    if (ret == -2) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("Cannot probe for supported suspend types"));
+        ret = -1;
+    }
 
     return ret;
 }
index e9ca564e82cc9b8f46c27afb377a1c0628d550e3..e67956ff9fa5f119387e165481862aa4867188ad 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * virsystemd.c: helpers for using systemd APIs
  *
- * Copyright (C) 2013 Red Hat, Inc.
+ * Copyright (C) 2013, 2014 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -326,6 +326,7 @@ virSystemdNotifyStartup(void)
 #endif
 }
 
+#ifdef WITH_SYSTEMD_DAEMON
 static int
 virSystemdPMSupportTarget(const char *methodName, bool *result)
 {
@@ -369,6 +370,14 @@ virSystemdPMSupportTarget(const char *methodName, bool *result)
 
     return ret;
 }
+#else /* ! WITH_SYSTEMD_DAEMON */
+static int
+virSystemdPMSupportTarget(const char *methodName ATTRIBUTE_UNUSED,
+                          bool *result ATTRIBUTE_UNUSED)
+{
+    return -2;
+}
+#endif /* ! WITH_SYSTEMD_DAEMON */
 
 int virSystemdCanSuspend(bool *result)
 {