1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-22 17:35:35 +03:00

core: use id unit when retrieving unit file state (#8038)

Previous code was using the basename(id->fragment_path) which returned
incorrect result if the unit was an instance.

For example, assuming that no instances of "template" have been created so far:

 $ systemctl enable template@1
 Created symlink from /etc/systemd/system/multi-user.target.wants/template@1.service to /usr/lib/systemd/system/template@.service.

 $ systemctl is-enabled template@3.service
 disabled

 $ systemctl status template@3.servicetemplate@3.service - openQA Worker #3
    Loaded: loaded (/usr/lib/systemd/system/template@.service; enabled; vendor preset: disabled)
    [...]

Here the unit file states reported by "status" and "is-enabled" were different.
This commit is contained in:
Franck Bui 2018-02-07 14:08:02 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent a166e13771
commit 9ea3a0e702

View File

@ -3965,7 +3965,7 @@ UnitFileState unit_get_unit_file_state(Unit *u) {
r = unit_file_get_state( r = unit_file_get_state(
u->manager->unit_file_scope, u->manager->unit_file_scope,
NULL, NULL,
basename(u->fragment_path), u->id,
&u->unit_file_state); &u->unit_file_state);
if (r < 0) if (r < 0)
u->unit_file_state = UNIT_FILE_BAD; u->unit_file_state = UNIT_FILE_BAD;