From 7c2503218e0944947a55d02ef59a8676ffe1df9b Mon Sep 17 00:00:00 2001 From: Douglas Christman Date: Thu, 24 Nov 2016 21:44:14 -0500 Subject: calendarspec: refactor format_chain() Factor out repeated references to usec and remove nested ifs. --- src/basic/calendarspec.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'src/basic/calendarspec.c') diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c index 329fd213c8..8b57de4744 100644 --- a/src/basic/calendarspec.c +++ b/src/basic/calendarspec.c @@ -256,6 +256,7 @@ static void format_weekdays(FILE *f, const CalendarSpec *c) { static void format_chain(FILE *f, int space, const CalendarComponent *c, bool usec) { const CalendarComponent *n, *p; + int d = usec ? (int) USEC_PER_SEC : 1; assert(f); @@ -265,21 +266,15 @@ static void format_chain(FILE *f, int space, const CalendarComponent *c, bool us } assert(c->value >= 0); - if (!usec) - fprintf(f, "%0*i", space, c->value); - else if (c->value % USEC_PER_SEC == 0) - fprintf(f, "%0*i", space, (int) (c->value / USEC_PER_SEC)); - else - fprintf(f, "%0*i.%06i", space, (int) (c->value / USEC_PER_SEC), (int) (c->value % USEC_PER_SEC)); - - if (c->repeat > 0) { - if (!usec) - fprintf(f, "/%i", c->repeat); - else if (c->repeat % USEC_PER_SEC == 0) - fprintf(f, "/%i", (int) (c->repeat / USEC_PER_SEC)); - else - fprintf(f, "/%i.%06i", (int) (c->repeat / USEC_PER_SEC), (int) (c->repeat % USEC_PER_SEC)); - } + + fprintf(f, "%0*i", space, c->value / d); + if (c->value % d != 0) + fprintf(f, ".%06i", c->value % d); + + if (c->repeat != 0) + fprintf(f, "/%i", c->repeat / d); + if (c->repeat % d != 0) + fprintf(f, ".%06i", c->repeat % d); p = c; for (;;) { @@ -288,13 +283,13 @@ static void format_chain(FILE *f, int space, const CalendarComponent *c, bool us if (!n || n->repeat || p->repeat) break; - if (n->value - p->value != (usec ? (int) USEC_PER_SEC : 1)) + if (n->value - p->value != d) break; p = n; } - if (p->value - c->value >= 2 * (usec ? (int) USEC_PER_SEC : 1)) { + if (p->value - c->value >= 2 * d) { fputs("..", f); format_chain(f, space, p, usec); } else if (c->next) { -- cgit v1.2.3-54-g00ecf