On 02/20/2018 12:08 PM, Daniel P. Berrangé wrote: > To ensure we have standardized error messages when reporting problems > with enum values being out of a range, add virReportEnumRangeError(). > > virReportEnumRangeError(virDomainState, 34); > > results in a message > > "internal error: Unexpected enum value 34 for virDomainState" > > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > --- > src/util/virerror.h | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/src/util/virerror.h b/src/util/virerror.h > index cf434f45fc..1d02451604 100644 > --- a/src/util/virerror.h > +++ b/src/util/virerror.h > @@ -164,7 +164,14 @@ void virReportSystemErrorFull(int domcode, > # define virReportRestrictedError(...) \ > virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_OPERATION_DENIED, \ > __FILE__, __FUNCTION__, __LINE__, __VA_ARGS__) > - > +/* The sizeof(typname) comparison here is a hack to catch typos > + * in the name of the enum by triggering a compile error. It should > + * get optimized away since sizeof() is known at compile time */ > +# define virReportEnumRangeError(typname, value) \ > + virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INTERNAL_ERROR, \ > + __FILE__, __FUNCTION__, __LINE__, \ > + "Unexpected enum value %d for %s", \ Need to resolve syntax-check warning about right-aligned "\"... > + value, sizeof(typname) != 0 ? #typname : #typname); I saw some internal IRC over the sizeof check... Assuming Eric and you come up with something reasonable... Reviewed-by: John Ferlan <jferlan@xxxxxxxxxx> John Even though I'm not 100% on board with the whole error message for LAST and default especially when they're a cannot get there... > > void virReportOOMErrorFull(int domcode, > const char *filename, > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list