summaryrefslogtreecommitdiff
path: root/src/utils.c
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2015-02-22 11:32:20 +0100
committerLukas Fleischer <calcurse@cryptocrack.de>2015-02-22 11:34:11 +0100
commit7a631b2b63a040b1442feda435a0e9ac7e80774f (patch)
treeb6b0c95ef8600282c17b730f66507e1304dcc78f /src/utils.c
parenta6c73232a8ffeed7c58dd45b766e241f8ec59d25 (diff)
downloadcalcurse-7a631b2b63a040b1442feda435a0e9ac7e80774f.zip
Use date_sec_change() for adding day deltas
Fixes tests range-002.sh and search-001.sh. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c11
1 files changed, 5 insertions, 6 deletions
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, &lt);
if (extformat[0] == '\0' || !strcmp(extformat, "default")) {
- if (date >= day && date <= day + DAYINSEC)
+ if (date >= day && date <= day_end)
strftime(buf, BUFSIZ, "%H:%M", &lt);
else
strftime(buf, BUFSIZ, "..:..", &lt);