From 40d9dcae87a7198b1dfcc5b8437728310c78ae70 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Mon, 21 Oct 2019 15:26:40 +0200 Subject: Properly display chatwin history So far if one had enabled `/history` and did `/msg somenick` the history was loaded from file and displayed like this: ``` 04-04-17 15:23 - 3/4/2017: 01-01-00 10:30 - me: .... 01-01-00 10:31 - somebody: .... 01-01-00 10:32 - somebody: .... ``` So the first line contained the actual date. But the date used in each line was always 01-01-2000. This date was for some reason hardcoded. This commit now actually uses that date to build the proper GDateTime instead of just printing it. Fix https://github.com/profanity-im/profanity/issues/922 --- src/log.c | 1 - src/ui/chatwin.c | 14 ++++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/log.c b/src/log.c index 96a99be2..80e91c56 100644 --- a/src/log.c +++ b/src/log.c @@ -599,7 +599,6 @@ _groupchat_log_chat(const gchar *const login, const gchar *const room, const gch g_date_time_unref(dt); } - GSList* chat_log_get_previous(const gchar *const login, const gchar *const recipient) { diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index 006b5ca6..df3849c0 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -467,19 +467,25 @@ _chatwin_history(ProfChatWin *chatwin, const char *const contact) GSList *history = chat_log_get_previous(jid->barejid, contact); jid_destroy(jid); GSList *curr = history; + int idd; + int imo; + int iyy; + while (curr) { char *line = curr->data; - // entry + // entry, containing the actual entries with date followed by text if (line[2] == ':') { char hh[3]; memcpy(hh, &line[0], 2); hh[2] = '\0'; int ihh = atoi(hh); char mm[3]; memcpy(mm, &line[3], 2); mm[2] = '\0'; int imm = atoi(mm); char ss[3]; memcpy(ss, &line[6], 2); ss[2] = '\0'; int iss = atoi(ss); - GDateTime *timestamp = g_date_time_new_local(2000, 1, 1, ihh, imm, iss); + GDateTime *timestamp = g_date_time_new_local(iyy, imo, idd, ihh, imm, iss); win_print_history((ProfWin*)chatwin, timestamp, "%s", curr->data+11); g_date_time_unref(timestamp); - // header + // header, containing the date from filename "21/10/2019:" } else { - win_println((ProfWin*)chatwin, THEME_DEFAULT, '-', "%s", curr->data); + char dd[3]; memcpy(dd, &line[0], 2); dd[2] = '\0'; idd = atoi(dd); + char mm[3]; memcpy(mm, &line[3], 2); mm[2] = '\0'; imo = atoi(mm); + char yy[5]; memcpy(yy, &line[6], 4); yy[4] = '\0'; iyy = atoi(yy); } curr = g_slist_next(curr); } -- cgit 1.4.1-2-gfad0