tools/systemd/time: fix compute_next_event for weekdays
two things were wrong here: * the range (x..y) does not include y, so the range (day_num+1..6) goes from (day_num+1) to 5 (but sunday is 6) * WeekDays.bits() does not return the 'day_num' of that day, but the bit value (e.g. 64 for SUNDAY) but was treated as the index of the day of the week to fix this, we drop the map to WeekDays and use the 'indices' directly this patch makes the test work again Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
538b9c1c27
commit
eed8a5ad79
|
@ -163,12 +163,11 @@ pub fn compute_next_event(
|
||||||
if event.days.contains(day) {
|
if event.days.contains(day) {
|
||||||
t.changes.remove(TMChanges::WDAY);
|
t.changes.remove(TMChanges::WDAY);
|
||||||
} else {
|
} else {
|
||||||
if let Some(n) = (day_num+1..6)
|
if let Some(n) = ((day_num+1)..7)
|
||||||
.map(|d| WeekDays::from_bits(1<<d).unwrap())
|
.find(|d| event.days.contains(WeekDays::from_bits(1<<d).unwrap()))
|
||||||
.find(|d| event.days.contains(*d))
|
|
||||||
{
|
{
|
||||||
// try next day
|
// try next day
|
||||||
t.add_days((n.bits() as i32) - day_num, true);
|
t.add_days(n - day_num, true);
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
// try next week
|
// try next week
|
||||||
|
|
Loading…
Reference in New Issue