mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
systemctl-edit: ignore ENOENT from unit_is_masked()
If a specified unit does not exist, then it is definitely not masked.
Fixes #35632.
(cherry picked from commit b58b00e4c3
)
This commit is contained in:
parent
b5dc1922f9
commit
48b404d546
@ -349,8 +349,8 @@ int verb_edit(int argc, char *argv[], void *userdata) {
|
|||||||
|
|
||||||
STRV_FOREACH(tmp, names) {
|
STRV_FOREACH(tmp, names) {
|
||||||
r = unit_is_masked(bus, *tmp);
|
r = unit_is_masked(bus, *tmp);
|
||||||
if (r < 0)
|
if (r < 0 && r != -ENOENT)
|
||||||
return r;
|
return log_error_errno(r, "Failed to check if unit %s is masked: %m", *tmp);
|
||||||
if (r > 0)
|
if (r > 0)
|
||||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Cannot edit %s: unit is masked.", *tmp);
|
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Cannot edit %s: unit is masked.", *tmp);
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ at_exit() {
|
|||||||
# the 'revert' verb as well
|
# the 'revert' verb as well
|
||||||
export UNIT_NAME="systemctl-test-$RANDOM.service"
|
export UNIT_NAME="systemctl-test-$RANDOM.service"
|
||||||
export UNIT_NAME2="systemctl-test-$RANDOM.service"
|
export UNIT_NAME2="systemctl-test-$RANDOM.service"
|
||||||
|
export UNIT_NAME_TEMPLATE="systemctl-test-${RANDOM}@.service"
|
||||||
|
|
||||||
cat >"/usr/lib/systemd/system/$UNIT_NAME" <<\EOF
|
cat >"/usr/lib/systemd/system/$UNIT_NAME" <<\EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
@ -65,6 +66,16 @@ EOF
|
|||||||
printf '%s\n' '[Unit]' 'Description=spectacular' '# this comment should remain' | \
|
printf '%s\n' '[Unit]' 'Description=spectacular' '# this comment should remain' | \
|
||||||
cmp - "/etc/systemd/system/$UNIT_NAME.d/override2.conf"
|
cmp - "/etc/systemd/system/$UNIT_NAME.d/override2.conf"
|
||||||
|
|
||||||
|
# Edit nonexistent template unit, see issue #35632.
|
||||||
|
systemctl edit "$UNIT_NAME_TEMPLATE" --stdin --runtime --force --full <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=template unit test
|
||||||
|
# this comment should remain
|
||||||
|
|
||||||
|
EOF
|
||||||
|
printf '%s\n' '[Unit]' 'Description=template unit test' '# this comment should remain' | \
|
||||||
|
cmp - "/run/systemd/system/$UNIT_NAME_TEMPLATE"
|
||||||
|
|
||||||
# Test simultaneous editing of two units and creation of drop-in for a nonexistent unit
|
# Test simultaneous editing of two units and creation of drop-in for a nonexistent unit
|
||||||
systemctl edit "$UNIT_NAME" "$UNIT_NAME2" --stdin --force --drop-in=override2.conf <<<'[X-Section]'
|
systemctl edit "$UNIT_NAME" "$UNIT_NAME2" --stdin --force --drop-in=override2.conf <<<'[X-Section]'
|
||||||
printf '%s\n' '[X-Section]' | cmp - "/etc/systemd/system/$UNIT_NAME.d/override2.conf"
|
printf '%s\n' '[X-Section]' | cmp - "/etc/systemd/system/$UNIT_NAME.d/override2.conf"
|
||||||
|
Loading…
Reference in New Issue
Block a user