cron: don't force changed=True when old crontab was empty
The cron module forces changed=True when there was no real change,
but the original crontab did not contain a final newline, which is
mandatory.
When the user has no crontab or the user does not exist at all,
crontab -l exits with 1 and the cron module correctly interprets
this as "no crontab" and stores the old crontab as "".
However this triggers changed=True, even if we're not going to
change anything, e.g. when removing a crontab entry from a user
who has no crontabs at all.
Let's special-case the fact that the old crontab is empty and not
force changed=True in that case.
(cherry picked from commit 61579aebb2
)
This commit is contained in:
parent
f001646f2c
commit
7c9c8396d1
1 changed files with 1 additions and 1 deletions
|
@ -726,7 +726,7 @@ def main():
|
|||
changed = True
|
||||
|
||||
# no changes to env/job, but existing crontab needs a terminating newline
|
||||
if not changed:
|
||||
if not changed and not crontab.existing == '':
|
||||
if not (crontab.existing.endswith('\r') or crontab.existing.endswith('\n')):
|
||||
changed = True
|
||||
|
||||
|
|
Loading…
Reference in a new issue