build: Don't use code with dbus_message_unref when built without dbus

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>
This commit is contained in:
Martin Kletzander 2014-04-14 10:50:42 +02:00
parent 110c0db88c
commit 4897698110
2 changed files with 29 additions and 5 deletions

View 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;
}

View 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)
{