From daa30ef3bb592cea54dbdbce0f241bab43eec5dc Mon Sep 17 00:00:00 2001
From: Lars Henriksen <LarsHenriksen@get2net.dk>
Date: Wed, 14 Nov 2018 19:04:39 +0100
Subject: Fix print_date()

In print_date(date, day, ...) it is silently assumed that day is
midnight (beginning) of the day to be printed. Assume only that it
belongs to the day.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
---
 src/utils.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

(limited to 'src')

diff --git a/src/utils.c b/src/utils.c
index 7b02f12..d380926 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -1593,7 +1593,10 @@ static enum format_specifier parse_fs(const char **s, char *extformat)
 	}
 }
 
-/* Print a formatted date to stdout. */
+/*
+ * Print date to stdout, formatted to be displayed for day.
+ * The "day" argument may be any time belonging to that day.
+ */
 static void print_date(long date, long day, const char *extformat)
 {
 	char buf[BUFSIZ];
@@ -1601,14 +1604,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;
+		time_t day_start = update_time_in_date(day, 0, 0);
+		time_t day_end = date_sec_change(day_start, 0, 1);
 		struct tm lt;
 
-		localtime_r((time_t *) & t, &lt);
+		localtime_r((time_t *) &date, &lt);
 
 		if (extformat[0] == '\0' || !strcmp(extformat, "default")) {
-			if (date >= day && date <= day_end)
+			if (date >= day_start && date <= day_end)
 				strftime(buf, BUFSIZ, "%H:%M", &lt);
 			else
 				strftime(buf, BUFSIZ, "..:..", &lt);
-- 
cgit v1.2.3-70-g09d2