From 7a631b2b63a040b1442feda435a0e9ac7e80774f Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 22 Feb 2015 11:32:20 +0100 Subject: Use date_sec_change() for adding day deltas Fixes tests range-002.sh and search-001.sh. Signed-off-by: Lukas Fleischer --- src/args.c | 8 ++++---- src/utils.c | 11 +++++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/args.c b/src/args.c index e600cc2..471c9ab 100644 --- a/src/args.c +++ b/src/args.c @@ -252,7 +252,7 @@ static void next_arg(void) const long current_time = now(); int time_left, hours_left, min_left; - next_app.time = current_time + DAYINSEC; + next_app.time = date_sec_change(current_time, 0, 1); next_app.got_app = 0; next_app.txt = NULL; @@ -297,7 +297,7 @@ date_arg_from_to(long from, long to, int add_line, const char *fmt_apt, { long date; - for (date = from; date < to; date += DAYINSEC) { + for (date = from; date < to; date = date_sec_change(date, 0, 1)) { day_store_items(date, 0); if (day_item_count(0) == 0) continue; @@ -729,9 +729,9 @@ int parse_args(int argc, char **argv) } if (to == -1 && range == -1) - to = from + DAYINSEC; + to = date_sec_change(from, 0, 1); else if (to == -1 && range >= 0) - to = from + range * DAYINSEC; + to = date_sec_change(from, 0, range); else if (to >= 0 && range >= 0) EXIT_IF(to >= 0, _("cannot specify a range and an end date")); diff --git a/src/utils.c b/src/utils.c index fe794af..b52de74 100644 --- a/src/utils.c +++ b/src/utils.c @@ -665,9 +665,7 @@ static void get_weekday_ymd(int *year, int *month, int *day, int weekday) localtime_r(&t, &tm); delta = weekday - tm.tm_wday; - if (delta <= 0) - delta += 7; - t += delta * DAYINSEC; + t = date_sec_change(t, 0, delta > 0 ? delta : 7); localtime_r(&t, &tm); *day = tm.tm_mday; @@ -712,10 +710,10 @@ parse_date(const char *date_string, enum datefmt datefmt, int *year, get_ymd(year, month, day, get_today()); return 1; } else if (!strcasecmp(date_string, "yesterday")) { - get_ymd(year, month, day, get_today() - DAYINSEC); + get_ymd(year, month, day, date_sec_change(get_today(), 0, -1)); return 1; } else if (!strcasecmp(date_string, "tomorrow")) { - get_ymd(year, month, day, get_today() + DAYINSEC); + get_ymd(year, month, day, date_sec_change(get_today(), 0, 1)); return 1; } else if (!strcasecmp(date_string, "now")) { get_ymd(year, month, day, now()); @@ -1290,13 +1288,14 @@ static void print_date(long date, long day, const char *extformat) if (!strcmp(extformat, "epoch")) { printf("%ld", date); } else { + time_t day_end = date_sec_change(day, 0, 1); time_t t = date; struct tm lt; localtime_r((time_t *) & t, <); if (extformat[0] == '\0' || !strcmp(extformat, "default")) { - if (date >= day && date <= day + DAYINSEC) + if (date >= day && date <= day_end) strftime(buf, BUFSIZ, "%H:%M", <); else strftime(buf, BUFSIZ, "..:..", <); -- cgit v1.2.3-54-g00ecf