commit 5afaee0b5c09dc1ba561780728e95399dc30e477 parent bde9727da6da059fc330e3ee0ae9fe665edd1c34 Author: Jacob R. Edwards <jacob@jacobedwards.org> Date: Sun, 31 Mar 2024 18:36:26 -0700 Refactor getduration function It now only has to check a given variable once, and time(3) is only called when needed (instead of in every call). Diffstat:
M | times.c | | | 17 | +++++++---------- |
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/times.c b/times.c @@ -192,18 +192,15 @@ getduration(struct timesheet *ts) o = 0; s = ts->times[StartTime]; - if (ts->set & EndTimeFlag) + if (ts->set & EndTimeFlag) { e = ts->times[EndTime]; - else + } else if (!(ts->set & BreakStartTime)) { e = time(NULL); - - if (ts->set & BreakStartTimeFlag) { - if (ts->set & BreakEndTimeFlag) { - o = ts->times[BreakEndTime] - ts->times[BreakStartTime]; - } else { - assert(!(ts->set & EndTimeFlag)); - e = ts->times[BreakStartTime]; - } + } else if (ts->set & BreakEndTimeFlag) { + o = ts->times[BreakEndTime] - ts->times[BreakStartTime]; + e = time(NULL); + } else { + e = ts->times[BreakStartTime]; } return e - s - o;