Attempt to fix time on messages

This commit is contained in:
Andrew Pamment 2017-04-21 20:31:41 +10:00
parent 92da7d4bc9
commit 5c7ff9af9a
2 changed files with 23 additions and 11 deletions

View File

@ -18,6 +18,18 @@ extern struct bbs_config conf;
extern struct user_record *gUser; extern struct user_record *gUser;
extern int mynode; extern int mynode;
time_t utc_to_local(time_t utc) {
time_t local;
struct tm date_time;
localtime_r(&utc, &date_time);
local = mktime(&date_time);
return local;
}
s_JamBase *open_jam_base(char *path) { s_JamBase *open_jam_base(char *path) {
int ret; int ret;
s_JamBase *jb; s_JamBase *jb;
@ -1360,7 +1372,7 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
} }
s_printf(get_string(107), msghs->msgs[mailno]->to, conf.mail_conferences[user->cur_mail_conf]->name); s_printf(get_string(107), msghs->msgs[mailno]->to, conf.mail_conferences[user->cur_mail_conf]->name);
s_printf(get_string(108), msghs->msgs[mailno]->subject, conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->name); s_printf(get_string(108), msghs->msgs[mailno]->subject, conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->name);
localtime_r((time_t *)&msghs->msgs[mailno]->msg_h->DateWritten, &msg_date); gmtime_r((time_t *)&msghs->msgs[mailno]->msg_h->DateWritten, &msg_date);
sprintf(buffer, "%s", asctime(&msg_date)); sprintf(buffer, "%s", asctime(&msg_date));
buffer[strlen(buffer) - 1] = '\0'; buffer[strlen(buffer) - 1] = '\0';
s_printf(get_string(109), buffer, mailno + 1, msghs->msg_count); s_printf(get_string(109), buffer, mailno + 1, msghs->msg_count);
@ -1550,7 +1562,7 @@ void read_message(struct user_record *user, struct msg_headers *msghs, int mailn
} }
JAM_ClearMsgHeader( &jmh ); JAM_ClearMsgHeader( &jmh );
jmh.DateWritten = time(NULL); jmh.DateWritten = utc_to_local(time(NULL));
jmh.Attribute |= JAM_MSG_LOCAL; jmh.Attribute |= JAM_MSG_LOCAL;
jsp = JAM_NewSubPacket(); jsp = JAM_NewSubPacket();
@ -1925,7 +1937,7 @@ void post_message(struct user_record *user) {
} }
JAM_ClearMsgHeader( &jmh ); JAM_ClearMsgHeader( &jmh );
jmh.DateWritten = (uint32_t)time(NULL); jmh.DateWritten = (uint32_t)utc_to_local(time(NULL));
jmh.Attribute |= JAM_MSG_LOCAL; jmh.Attribute |= JAM_MSG_LOCAL;
if (conf.mail_conferences[user->cur_mail_conf]->realnames == 0) { if (conf.mail_conferences[user->cur_mail_conf]->realnames == 0) {
strcpy(buffer, user->loginname); strcpy(buffer, user->loginname);
@ -2154,7 +2166,7 @@ void list_messages(struct user_record *user) {
if (redraw) { if (redraw) {
s_printf(get_string(126)); s_printf(get_string(126));
for (j=start;j<start + 22 && j<msghs->msg_count;j++) { for (j=start;j<start + 22 && j<msghs->msg_count;j++) {
localtime_r((time_t *)&msghs->msgs[j]->msg_h->DateWritten, &msg_date); gmtime_r((time_t *)&msghs->msgs[j]->msg_h->DateWritten, &msg_date);
if (j == i -1) { if (j == i -1) {
if (msghs->msgs[j]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) { if (msghs->msgs[j]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) {
s_printf(get_string(188), j + 1, msghs->msgs[j]->subject, msghs->msgs[j]->from, msghs->msgs[j]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); s_printf(get_string(188), j + 1, msghs->msgs[j]->subject, msghs->msgs[j]->from, msghs->msgs[j]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
@ -2195,14 +2207,14 @@ void list_messages(struct user_record *user) {
s_printf("\e[%d;5H", i - start + 1); s_printf("\e[%d;5H", i - start + 1);
} else if (!redraw) { } else if (!redraw) {
s_printf("\e[%d;1H", i - start); s_printf("\e[%d;1H", i - start);
localtime_r((time_t *)&msghs->msgs[i-2]->msg_h->DateWritten, &msg_date); gmtime_r((time_t *)&msghs->msgs[i-2]->msg_h->DateWritten, &msg_date);
if (msghs->msgs[i-2]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) { if (msghs->msgs[i-2]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) {
s_printf(get_string(127), i - 1, msghs->msgs[i-2]->subject, msghs->msgs[i-2]->from, msghs->msgs[i-2]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); s_printf(get_string(127), i - 1, msghs->msgs[i-2]->subject, msghs->msgs[i-2]->from, msghs->msgs[i-2]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
} else { } else {
s_printf(get_string(128), i - 1, msghs->msgs[i-2]->subject, msghs->msgs[i-2]->from, msghs->msgs[i-2]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); s_printf(get_string(128), i - 1, msghs->msgs[i-2]->subject, msghs->msgs[i-2]->from, msghs->msgs[i-2]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
} }
s_printf("\e[%d;1H", i - start + 1); s_printf("\e[%d;1H", i - start + 1);
localtime_r((time_t *)&msghs->msgs[i-1]->msg_h->DateWritten, &msg_date); gmtime_r((time_t *)&msghs->msgs[i-1]->msg_h->DateWritten, &msg_date);
if (msghs->msgs[i-1]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) { if (msghs->msgs[i-1]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) {
s_printf(get_string(188), i, msghs->msgs[i-1]->subject, msghs->msgs[i-1]->from, msghs->msgs[i-1]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); s_printf(get_string(188), i, msghs->msgs[i-1]->subject, msghs->msgs[i-1]->from, msghs->msgs[i-1]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
} else { } else {
@ -2226,14 +2238,14 @@ void list_messages(struct user_record *user) {
redraw = 1; redraw = 1;
} else if (!redraw) { } else if (!redraw) {
s_printf("\e[%d;1H", i - start + 2); s_printf("\e[%d;1H", i - start + 2);
localtime_r((time_t *)&msghs->msgs[i]->msg_h->DateWritten, &msg_date); gmtime_r((time_t *)&msghs->msgs[i]->msg_h->DateWritten, &msg_date);
if (msghs->msgs[i]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) { if (msghs->msgs[i]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) {
s_printf(get_string(127), i + 1, msghs->msgs[i]->subject, msghs->msgs[i]->from, msghs->msgs[i]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); s_printf(get_string(127), i + 1, msghs->msgs[i]->subject, msghs->msgs[i]->from, msghs->msgs[i]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
} else { } else {
s_printf(get_string(128), i + 1, msghs->msgs[i]->subject, msghs->msgs[i]->from, msghs->msgs[i]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); s_printf(get_string(128), i + 1, msghs->msgs[i]->subject, msghs->msgs[i]->from, msghs->msgs[i]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
} }
s_printf("\e[%d;1H", i - start + 1); s_printf("\e[%d;1H", i - start + 1);
localtime_r((time_t *)&msghs->msgs[i-1]->msg_h->DateWritten, &msg_date); gmtime_r((time_t *)&msghs->msgs[i-1]->msg_h->DateWritten, &msg_date);
if (msghs->msgs[i-1]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) { if (msghs->msgs[i-1]->msg_h->MsgNum > jlr.HighReadMsg || all_unread) {
s_printf(get_string(188), i, msghs->msgs[i-1]->subject, msghs->msgs[i-1]->from, msghs->msgs[i-1]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); s_printf(get_string(188), i, msghs->msgs[i-1]->subject, msghs->msgs[i-1]->from, msghs->msgs[i-1]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
} else { } else {

View File

@ -196,7 +196,7 @@ char *www_msgs_messagelist(struct user_record *user, int conference, int area, i
for (i=skip_f -1; i>=skip_t;i--) { for (i=skip_f -1; i>=skip_t;i--) {
date = (time_t)mhrs->msgs[i]->msg_h->DateWritten; date = (time_t)mhrs->msgs[i]->msg_h->DateWritten;
localtime_r(&date, &msg_date); gmtime_r(&date, &msg_date);
if (mhrs->msgs[i]->msg_h->MsgNum > jlr.HighReadMsg) { if (mhrs->msgs[i]->msg_h->MsgNum > jlr.HighReadMsg) {
sprintf(buffer, "<div class=\"msg-summary\"><div class=\"msg-summary-id\">%d</div><div class=\"msg-summary-subject\"><a href=\"/msgs/%d/%d/%d\">%s</a></div><div class=\"msg-summary-from\">%s</div><div class=\"msg-summary-to\">%s</div><div class=\"msg-summary-date\">%.2d:%.2d %.2d-%.2d-%.2d</div></div>\n", mhrs->msgs[i]->msg_no + 1, conference, area, mhrs->msgs[i]->msg_h->MsgNum, mhrs->msgs[i]->subject, mhrs->msgs[i]->from, mhrs->msgs[i]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); sprintf(buffer, "<div class=\"msg-summary\"><div class=\"msg-summary-id\">%d</div><div class=\"msg-summary-subject\"><a href=\"/msgs/%d/%d/%d\">%s</a></div><div class=\"msg-summary-from\">%s</div><div class=\"msg-summary-to\">%s</div><div class=\"msg-summary-date\">%.2d:%.2d %.2d-%.2d-%.2d</div></div>\n", mhrs->msgs[i]->msg_no + 1, conference, area, mhrs->msgs[i]->msg_h->MsgNum, mhrs->msgs[i]->subject, mhrs->msgs[i]->from, mhrs->msgs[i]->to, msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
} else { } else {
@ -441,7 +441,7 @@ char *www_msgs_messageview(struct user_record *user, int conference, int area, i
len += strlen(buffer); len += strlen(buffer);
date = (time_t)jmh.DateWritten; date = (time_t)jmh.DateWritten;
localtime_r(&date, &msg_date); gmtime_r(&date, &msg_date);
sprintf(buffer, "<div class=\"msg-view-date\">Date: %.2d:%.2d %.2d-%.2d-%.2d</div>\n", msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100); sprintf(buffer, "<div class=\"msg-view-date\">Date: %.2d:%.2d %.2d-%.2d-%.2d</div>\n", msg_date.tm_hour, msg_date.tm_min, msg_date.tm_mday, msg_date.tm_mon + 1, msg_date.tm_year - 100);
if (len + strlen(buffer) > max_len - 1) { if (len + strlen(buffer) > max_len - 1) {
@ -693,7 +693,7 @@ int www_send_msg(struct user_record *user, char *to, char *subj, int conference,
} }
JAM_ClearMsgHeader( &jmh ); JAM_ClearMsgHeader( &jmh );
jmh.DateWritten = (uint32_t)time(NULL); jmh.DateWritten = (uint32_t)utc_to_local(time(NULL));
jmh.Attribute |= JAM_MSG_LOCAL; jmh.Attribute |= JAM_MSG_LOCAL;
if (conf.mail_conferences[conference]->realnames == 0) { if (conf.mail_conferences[conference]->realnames == 0) {