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:
Dominik Csapak 2020-06-03 16:34:06 +02:00 committed by Dietmar Maurer
parent 538b9c1c27
commit eed8a5ad79
1 changed files with 3 additions and 4 deletions

View File

@ -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