json: use SYNTHETIC_ERRNO() where appropriate

This commit is contained in:
Lennart Poettering 2019-04-02 14:52:56 +02:00
parent bab4820ee2
commit 02dab76e93
1 changed files with 22 additions and 44 deletions

View File

@ -3297,10 +3297,8 @@ int json_dispatch_boolean(const char *name, JsonVariant *variant, JsonDispatchFl
assert(variant);
assert(b);
if (!json_variant_is_boolean(variant)) {
json_log(variant, flags, 0, "JSON field '%s' is not a boolean.", strna(name));
return -EINVAL;
}
if (!json_variant_is_boolean(variant))
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not a boolean.", strna(name));
*b = json_variant_boolean(variant);
return 0;
@ -3312,10 +3310,8 @@ int json_dispatch_tristate(const char *name, JsonVariant *variant, JsonDispatchF
assert(variant);
assert(b);
if (!json_variant_is_boolean(variant)) {
json_log(variant, flags, 0, "JSON field '%s' is not a boolean.", strna(name));
return -EINVAL;
}
if (!json_variant_is_boolean(variant))
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not a boolean.", strna(name));
*b = json_variant_boolean(variant);
return 0;
@ -3327,10 +3323,8 @@ int json_dispatch_integer(const char *name, JsonVariant *variant, JsonDispatchFl
assert(variant);
assert(i);
if (!json_variant_is_integer(variant)) {
json_log(variant, flags, 0, "JSON field '%s' is not an integer.", strna(name));
return -EINVAL;
}
if (!json_variant_is_integer(variant))
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an integer.", strna(name));
*i = json_variant_integer(variant);
return 0;
@ -3342,10 +3336,8 @@ int json_dispatch_unsigned(const char *name, JsonVariant *variant, JsonDispatchF
assert(variant);
assert(u);
if (!json_variant_is_unsigned(variant)) {
json_log(variant, flags, 0, "JSON field '%s' is not an unsigned integer.", strna(name));
return -EINVAL;
}
if (!json_variant_is_unsigned(variant))
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an unsigned integer.", strna(name));
*u = json_variant_unsigned(variant);
return 0;
@ -3357,15 +3349,11 @@ int json_dispatch_uint32(const char *name, JsonVariant *variant, JsonDispatchFla
assert(variant);
assert(u);
if (!json_variant_is_unsigned(variant)) {
json_log(variant, flags, 0, "JSON field '%s' is not an unsigned integer.", strna(name));
return -EINVAL;
}
if (!json_variant_is_unsigned(variant))
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an unsigned integer.", strna(name));
if (json_variant_unsigned(variant) > UINT32_MAX) {
json_log(variant, flags, 0, "JSON field '%s' out of bounds.", strna(name));
return -ERANGE;
}
if (json_variant_unsigned(variant) > UINT32_MAX)
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "JSON field '%s' out of bounds.", strna(name));
*u = (uint32_t) json_variant_unsigned(variant);
return 0;
@ -3377,15 +3365,11 @@ int json_dispatch_int32(const char *name, JsonVariant *variant, JsonDispatchFlag
assert(variant);
assert(i);
if (!json_variant_is_integer(variant)) {
json_log(variant, flags, 0, "JSON field '%s' is not an integer.", strna(name));
return -EINVAL;
}
if (!json_variant_is_integer(variant))
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not an integer.", strna(name));
if (json_variant_integer(variant) < INT32_MIN || json_variant_integer(variant) > INT32_MAX) {
json_log(variant, flags, 0, "JSON field '%s' out of bounds.", strna(name));
return -ERANGE;
}
if (json_variant_integer(variant) < INT32_MIN || json_variant_integer(variant) > INT32_MAX)
return json_log(variant, flags, SYNTHETIC_ERRNO(ERANGE), "JSON field '%s' out of bounds.", strna(name));
*i = (int32_t) json_variant_integer(variant);
return 0;
@ -3403,10 +3387,8 @@ int json_dispatch_string(const char *name, JsonVariant *variant, JsonDispatchFla
return 0;
}
if (!json_variant_is_string(variant)) {
json_log(variant, flags, 0, "JSON field '%s' is not a string.", strna(name));
return -EINVAL;
}
if (!json_variant_is_string(variant))
return json_log(variant, flags, SYNTHETIC_ERRNO(EINVAL), "JSON field '%s' is not a string.", strna(name));
r = free_and_strdup(s, json_variant_string(variant));
if (r < 0)
@ -3429,20 +3411,16 @@ int json_dispatch_strv(const char *name, JsonVariant *variant, JsonDispatchFlags
return 0;
}
if (!json_variant_is_array(variant)) {
json_log(variant, 0, flags, "JSON field '%s' is not an array.", strna(name));
return -EINVAL;
}
if (!json_variant_is_array(variant))
return json_log(variant, SYNTHETIC_ERRNO(EINVAL), flags, "JSON field '%s' is not an array.", strna(name));
for (i = 0; i < json_variant_elements(variant); i++) {
JsonVariant *e;
assert_se(e = json_variant_by_index(variant, i));
if (!json_variant_is_string(e)) {
json_log(e, 0, flags, "JSON array element is not a string.");
return -EINVAL;
}
if (!json_variant_is_string(e))
return json_log(e, flags, SYNTHETIC_ERRNO(EINVAL), "JSON array element is not a string.");
r = strv_extend(&l, json_variant_string(e));
if (r < 0)