[libvirt] [PATCHv2 2/3] vmx: convert to typesafe virConf accessors
Fabiano Fidêncio
fabiano at fidencio.org
Sun May 27 12:07:12 UTC 2018
On Sun, May 27, 2018 at 1:02 PM, Ján Tomko <jtomko at redhat.com> wrote:
> On Sat, May 26, 2018 at 11:00:26PM +0200, Fabiano Fidêncio wrote:
>>
>> From: Fabiano Fidêncio <fidencio at redhat.com>
>>
>> Signed-off-by: Fabiano Fidêncio <fabiano at fidencio.org>
>> ---
>> src/vmx/vmx.c | 196
>> ++++++++++++++++++++++------------------------------------
>> 1 file changed, 73 insertions(+), 123 deletions(-)
>>
>> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
>> index df6a58a474..54542c29a6 100644
>> --- a/src/vmx/vmx.c
>> +++ b/src/vmx/vmx.c
>> @@ -808,47 +786,35 @@ static int
>> virVMXGetConfigLong(virConfPtr conf, const char *name, long long *number,
>> long long default_, bool optional)
>> {
>> - virConfValuePtr value;
>> + char *string = NULL;
>> + int result;
>
>
> Usually we use 'ret' as the name of the variable that will eventually be
> used to return from the function and 'rc' to store the value returned by
> the function we call (where they return more values than 0/-1):
>
> int ret = -1;
> int rc;
>
Right!
>>
>> *number = default_;
>> - value = virConfGetValue(conf, name);
>>
>> - if (value == NULL) {
>> - if (optional) {
>> - return 0;
>> - } else {
>> - virReportError(VIR_ERR_INTERNAL_ERROR,
>> - _("Missing essential config entry '%s'"),
>> name);
>> - return -1;
>> - }
>> - }
>> + result = virVMXGetConfigStringHelper(conf, name, &string, optional);
>> + if (result <= 0)
>> + return result;
>
>
> This would become:
> rc = GetStringHelper();
> if (rc <= 0)
> return rc;
>
Okay.
>>
>> - if (value->type == VIR_CONF_STRING) {
>> - if (value->str == NULL) {
>> - if (optional) {
>> - return 0;
>> - } else {
>> - virReportError(VIR_ERR_INTERNAL_ERROR,
>> - _("Missing essential config entry '%s'"),
>> name);
>> - return -1;
>> - }
>> - }
>> + if (STRCASEEQ(string, "unlimited")) {
>> + *number = -1;
>> + result = 0;
>> + goto cleanup;
>> + }
>>
>> - if (STRCASEEQ(value->str, "unlimited")) {
>> - *number = -1;
>> - } else if (virStrToLong_ll(value->str, NULL, 10, number) < 0) {
>> - virReportError(VIR_ERR_INTERNAL_ERROR,
>> - _("Config entry '%s' must represent an integer
>> value"),
>> - name);
>> - return -1;
>> - }
>> - } else {
>
>
> if you leave this 'else' here, there's no need to touch 'ret' or goto
> cleanup above.
Okay, I'll keep it as it is.
>
>> + if (virStrToLong_ll(string, NULL, 10, number) < 0) {
>> virReportError(VIR_ERR_INTERNAL_ERROR,
>> - _("Config entry '%s' must be a string"), name);
>> - return -1;
>> + _("Config entry '%s' must represent an integer value"),
>> + name);
>
>
>> + result = -1;
>
>
> This adjustment would also be unnecessary.
>
>> + goto cleanup;
>> }
>>
>> - return 0;
>> + result = 0;
>> +
>
>
> (NB: while many of the functions in this file use 'result' instead of
> 'ret', I'd suggest to slowly start replacing the old name instead of
> striving for consistency. Most of them are the Parse functions that
> already return a device definition via a pointer argument and the
> 0/-1 they return is redundant, because it can be replaced by a NULL
> check on the pointer)
Right!
>
> Jano
>
> Jano
Thanks for the review!
--
Fabiano Fidêncio
More information about the libvir-list
mailing list