Introduce bus_unit_check_load_state() helper

This function is used to check that a previous unit load succeed and
returns 0 in this case.

In the case the load failed, the function setup a bus error
accordingly and returns -errno.
This commit is contained in:
Franck Bui 2015-11-13 14:12:19 +01:00
parent cf0f970fe1
commit 000a996dc4
2 changed files with 19 additions and 0 deletions

View file

@ -1251,3 +1251,20 @@ int bus_unit_set_properties(
return n;
}
int bus_unit_check_load_state(Unit *u, sd_bus_error *error) {
if (u->load_state == UNIT_LOADED)
return 0;
/* Give a better description of the unit error when
* possible. Note that in the case of UNIT_MASKED, load_error
* is not set. */
if (u->load_state == UNIT_MASKED)
return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED, "Unit is masked.");
if (u->load_state == UNIT_NOT_FOUND)
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT, "Unit not found.");
return sd_bus_error_set_errnof(error, u->load_error, "Unit is not loaded properly: %m.");
}

View file

@ -37,3 +37,5 @@ int bus_unit_method_reset_failed(sd_bus_message *message, void *userdata, sd_bus
int bus_unit_queue_job(sd_bus_message *message, Unit *u, JobType type, JobMode mode, bool reload_if_possible, sd_bus_error *error);
int bus_unit_set_properties(Unit *u, sd_bus_message *message, UnitSetPropertiesMode mode, bool commit, sd_bus_error *error);
int bus_unit_method_set_properties(sd_bus_message *message, void *userdata, sd_bus_error *error);
int bus_unit_check_load_state(Unit *u, sd_bus_error *error);