From: Jiri Denemark Date: Fri, 3 Dec 2010 08:31:48 +0000 (+0100) Subject: Change return value of VIR_DRV_SUPPORTS_FEATURE to bool X-Git-Tag: v0.8.7~162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4186f92935e6bb5057b2db14f47dfd817ab0ab84;p=thirdparty%2Flibvirt.git Change return value of VIR_DRV_SUPPORTS_FEATURE to bool virDrvSupportsFeature API is allowed to return -1 on error while all but one uses of VIR_DRV_SUPPORTS_FEATURE only check for (non)zero return value. Let's make this macro return zero on error, which is what everyone expects anyway. --- diff --git a/src/driver.h b/src/driver.h index b770e5e569..75305fede5 100644 --- a/src/driver.h +++ b/src/driver.h @@ -47,17 +47,20 @@ typedef enum { /* Internal feature-detection macro. Don't call drv->supports_feature - * directly, because it may be NULL, use this macro instead. + * directly if you don't have to, because it may be NULL, use this macro + * instead. * - * Note that you must check for errors. + * Note that this treats a possible error returned by drv->supports_feature + * the same as not supported. If you care about the error, call + * drv->supports_feature directly. * * Returns: - * >= 1 Feature is supported. + * != 0 Feature is supported. * 0 Feature is not supported. - * -1 Error. */ -# define VIR_DRV_SUPPORTS_FEATURE(drv,conn,feature) \ - ((drv)->supports_feature ? (drv)->supports_feature((conn),(feature)) : 0) +# define VIR_DRV_SUPPORTS_FEATURE(drv,conn,feature) \ + ((drv)->supports_feature ? \ + (drv)->supports_feature((conn), (feature)) > 0 : 0) typedef virDrvOpenStatus (*virDrvOpen) (virConnectPtr conn, diff --git a/src/libvirt.c b/src/libvirt.c index b4951c233d..4188b452ea 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -1605,7 +1605,10 @@ virDrvSupportsFeature (virConnectPtr conn, int feature) return (-1); } - ret = VIR_DRV_SUPPORTS_FEATURE (conn->driver, conn, feature); + if (!conn->driver->supports_feature) + ret = 0; + else + ret = conn->driver->supports_feature(conn, feature); if (ret < 0) virDispatchError(conn);