r = sd_json_parse_file(f, "stdout", 0, &v, NULL, NULL);
if (r < 0)
- return log_error_errno(r, "Failed to parse JSON: %m");
+ return log_debug_errno(r, "Failed to parse JSON: %m");
*ret = TAKE_PTR(v);
return 0;
static BUS_DEFINE_PROPERTY_GET_ENUM(target_property_get_class, target_class, TargetClass);
-#define log_sysupdate_bad_json(verb, msg) \
- log_debug("Invalid JSON response from 'systemd-sysupdate %s': %s", verb, msg)
+#define log_sysupdate_bad_json_full(lvl, r, verb, msg) \
+ log_full_errno((lvl), (r), "Invalid JSON response from 'systemd-sysupdate %s': %s", (verb), (msg))
+#define log_sysupdate_bad_json(r, verb, msg) \
+ log_sysupdate_bad_json_full(LOG_ERR, (r), (verb), (msg))
+#define log_sysupdate_bad_json_debug(r, verb, msg) \
+ log_sysupdate_bad_json_full(LOG_DEBUG, (r), (verb), (msg))
static int target_method_list_finish(
sd_bus_message *msg,
assert(json);
v = sd_json_variant_by_key(json, "all");
- if (!v) {
- log_sysupdate_bad_json("list", "Missing key 'all'");
- return -EINVAL;
- }
+ if (!v)
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "list", "Missing key 'all'");
r = sd_json_variant_strv(v, &versions);
if (r < 0)
- return r;
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "list", "Key 'all' should be strv");
r = sd_bus_message_new_method_return(msg, &reply);
if (r < 0)
assert(json);
sd_json_variant *v = sd_json_variant_by_key(json, "available");
- if (!v) {
- log_sysupdate_bad_json("check-new", "Missing key 'available'");
- return -EINVAL;
- }
+ if (!v)
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "check-new", "Missing key 'available'");
if (sd_json_variant_is_null(v))
reply = "";
sd_json_variant *json,
sd_bus_error *error) {
+ sd_json_variant *v;
uint64_t instances;
assert(json);
- instances = sd_json_variant_unsigned(sd_json_variant_by_key(json, "removed"));
+ v = sd_json_variant_by_key(json, "removed");
+ if (!v)
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "vacuum", "Missing key 'removed'");
+ instances = sd_json_variant_unsigned(v);
return sd_bus_reply_method_return(msg, "u", instances);
}
r = sysupdate_run_simple(&v, t, "--offline", "list", NULL);
if (r < 0)
- return r;
+ return log_error_errno(r, "Failed to run 'systemd-sysupdate list': %m");
version_json = sd_json_variant_by_key(v, "current");
- if (!version_json) {
- log_sysupdate_bad_json("list", "Missing key 'current'");
- return -EINVAL;
- }
+ if (!version_json)
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "list", "Missing key 'current'");
if (sd_json_variant_is_null(version_json))
return sd_bus_reply_method_return(msg, "s", "");
- if (!sd_json_variant_is_string(version_json)) {
- log_sysupdate_bad_json("list", "Expected string value for key 'current'");
- return -EINVAL;
- }
+ if (!sd_json_variant_is_string(version_json))
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "list", "Key 'current' should be a string");
return sd_bus_reply_method_return(msg, "s", sd_json_variant_string(version_json));
}
r = sysupdate_run_simple(&v, t, "--offline", "list", NULL);
if (r < 0)
- return r;
+ return log_error_errno(r, "Failed to run 'systemd-sysupdate list': %m");
appstream_url_json = sd_json_variant_by_key(v, "appstream_urls");
- if (!appstream_url_json) {
- log_sysupdate_bad_json("list", "Missing key 'appstream_urls'");
- return -EINVAL;
- }
+ if (!appstream_url_json)
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "list", "Missing key 'appstream_urls'");
r = sd_json_variant_strv(appstream_url_json, ret);
- if (r < 0) {
- log_sysupdate_bad_json("list", "Expected array of strings for key 'appstream_urls'");
- return r;
- }
+ if (r < 0)
+ return log_sysupdate_bad_json(SYNTHETIC_ERRNO(EPROTO), "list", "Key 'appstream_urls' should be strv");
return 0;
}
r = sysupdate_run_simple(&json, t, "components", NULL);
if (r < 0)
- return r;
+ return log_debug_errno(r, "Failed to run 'systemd-sysupdate components': %m");
v = sd_json_variant_by_key(json, "default");
if (!v)
- return -EINVAL;
+ return log_sysupdate_bad_json_debug(SYNTHETIC_ERRNO(EPROTO), "components", "Missing key 'default'");
have_default = sd_json_variant_boolean(v);
v = sd_json_variant_by_key(json, "components");
if (!v)
- return -EINVAL;
+ return log_sysupdate_bad_json_debug(SYNTHETIC_ERRNO(EPROTO), "components", "Missing key 'components'");
r = sd_json_variant_strv(v, &components);
if (r < 0)
- return r;
+ return log_sysupdate_bad_json_debug(SYNTHETIC_ERRNO(EPROTO), "components", "Key 'components' should be a strv");
if (ret_components)
*ret_components = TAKE_PTR(components);
target_class_to_string(*class));
}
- return manager_enumerate_components(m);
+ r = manager_enumerate_components(m);
+ if (r < 0)
+ log_warning_errno(r, "Failed to enumerate components, ignoring: %m");
+
+ return 0;
}
static int manager_ensure_targets(Manager *m) {