Revert "sd-json: add new sd_json_variant_unset_field() call"

This reverts commit b6a2df6307.

The functionality is entirely redundant, we already have
sd_json_variant_filter() which does the same, and is in fact even more
powerful, since it takes a list instead of a single field to remove.
This commit is contained in:
Lennart Poettering
2025-03-02 11:04:15 +00:00
committed by Luca Boccassi
parent 5bc576225a
commit f2b1de6f5b
6 changed files with 0 additions and 187 deletions
-1
View File
@@ -1065,7 +1065,6 @@ global:
sd_device_enumerator_add_all_parents;
sd_json_variant_type_from_string;
sd_json_variant_type_to_string;
sd_json_variant_unset_field;
sd_varlink_get_current_method;
sd_varlink_get_description;
sd_varlink_get_input_fd;
-50
View File
@@ -2129,56 +2129,6 @@ _public_ int sd_json_variant_set_field_strv(sd_json_variant **v, const char *fie
return sd_json_variant_set_field(v, field, m);
}
_public_ int sd_json_variant_unset_field(sd_json_variant **v, const char *field) {
int r;
assert_return(v, -EINVAL);
assert_return(field, -EINVAL);
if (sd_json_variant_is_blank_object(*v))
return 0;
if (!sd_json_variant_is_object(*v))
return -EINVAL;
_cleanup_free_ sd_json_variant **array = NULL;
size_t k = 0;
for (size_t i = 0, n = sd_json_variant_elements(*v); i < n; i += 2) {
sd_json_variant *p;
p = sd_json_variant_by_index(*v, i);
if (!sd_json_variant_is_string(p))
return -EINVAL;
if (streq(sd_json_variant_string(p), field)) {
if (!array) {
assert(n >= 2);
array = new(sd_json_variant*, n - 2);
if (!array)
return -ENOMEM;
for (k = 0; k < i; k++)
array[k] = sd_json_variant_by_index(*v, k);
}
} else if (array) {
array[k++] = p;
array[k++] = sd_json_variant_by_index(*v, i + 1);
}
}
if (!array)
return 0;
_cleanup_(sd_json_variant_unrefp) sd_json_variant *w = NULL;
r = sd_json_variant_new_object(&w, array, k);
if (r < 0)
return r;
json_variant_propagate_sensitive(*v, w);
JSON_VARIANT_REPLACE(*v, TAKE_PTR(w));
return 1;
}
_public_ int sd_json_variant_merge_object(sd_json_variant **v, sd_json_variant *m) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *w = NULL;
_cleanup_free_ sd_json_variant **array = NULL;
-2
View File
@@ -168,8 +168,6 @@ int sd_json_variant_set_field_unsigned(sd_json_variant **v, const char *field, u
int sd_json_variant_set_field_boolean(sd_json_variant **v, const char *field, int b);
int sd_json_variant_set_field_strv(sd_json_variant **v, const char *field, char **l);
int sd_json_variant_unset_field(sd_json_variant **v, const char *field);
sd_json_variant* sd_json_variant_find(sd_json_variant *haystack, sd_json_variant *needle);
int sd_json_variant_append_array(sd_json_variant **v, sd_json_variant *element);
-38
View File
@@ -1419,42 +1419,4 @@ TEST(fd_info) {
pidref_done(&pidref);
}
TEST(json_variant_unset_field) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
ASSERT_OK_POSITIVE(sd_json_variant_is_blank_object(v));
ASSERT_OK_ZERO(sd_json_variant_unset_field(&v, "foo"));
ASSERT_OK_POSITIVE(sd_json_variant_is_blank_object(v));
ASSERT_NULL(v);
ASSERT_OK(sd_json_buildo(&v,
SD_JSON_BUILD_PAIR_STRING("foo", "bar"),
SD_JSON_BUILD_PAIR_STRING("quux", "waldo"),
SD_JSON_BUILD_PAIR_STRING("piff", "paff")));
_cleanup_(sd_json_variant_unrefp) sd_json_variant *w = sd_json_variant_ref(v);
ASSERT_OK_POSITIVE(sd_json_variant_equal(v, w));
ASSERT_OK_ZERO(sd_json_variant_unset_field(&v, "fooxxx"));
ASSERT_OK_POSITIVE(sd_json_variant_equal(v, w));
ASSERT_OK_POSITIVE(sd_json_variant_unset_field(&v, "foo"));
ASSERT_OK_ZERO(sd_json_variant_equal(v, w));
_cleanup_(sd_json_variant_unrefp) sd_json_variant *x = NULL;
ASSERT_OK(sd_json_buildo(&x,
SD_JSON_BUILD_PAIR_STRING("quux", "waldo"),
SD_JSON_BUILD_PAIR_STRING("piff", "paff")));
ASSERT_OK_POSITIVE(sd_json_variant_equal(v, x));
ASSERT_OK_POSITIVE(sd_json_variant_unset_field(&v, "piff"));
x = sd_json_variant_unref(x);
ASSERT_OK(sd_json_buildo(&x,
SD_JSON_BUILD_PAIR_STRING("quux", "waldo")));
ASSERT_OK_POSITIVE(sd_json_variant_equal(x, v));
ASSERT_OK_POSITIVE(sd_json_variant_unset_field(&v, "quux"));
ASSERT_OK_POSITIVE(sd_json_variant_is_blank_object(v));
}
DEFINE_TEST_MAIN(LOG_DEBUG);