Fix handling of recurrent open-ended appointments at 00:00
Prior to this commit, a recurrent appointment ending at 00:00 on a given day was not considered to span the day. This is the correct behavior for all cases, except appointments without end time (both starting and ending at midnight on a given day). Handle this edge case explicitly. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
parent
ce6f8bf85b
commit
ac5113640d
20
src/recur.c
20
src/recur.c
@ -1003,14 +1003,20 @@ static int find_occurrence(time_t start, long dur, struct rpt *rpt, llist_t *exc
|
|||||||
if (rpt->until && t >= NEXTDAY(rpt->until))
|
if (rpt->until && t >= NEXTDAY(rpt->until))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Does it span the given day? */
|
/* Does it span the given day?
|
||||||
if (t + DUR(t) < day)
|
*
|
||||||
|
* NOTE: An appointment ending at 00:00 is not considered to span the
|
||||||
|
* given day, unless the appointment is an appointment without
|
||||||
|
* specified end time, which is internally treated as appointment with
|
||||||
|
* duration 0.
|
||||||
|
*/
|
||||||
|
if (t + DUR(t) >= day || (t == day && dur == 0)) {
|
||||||
|
if (occurrence)
|
||||||
|
*occurrence = t;
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
if (occurrence)
|
|
||||||
*occurrence = t;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
#undef DUR
|
#undef DUR
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user