diff options
| -rw-r--r-- | chat.h | 4 | ||||
| -rw-r--r-- | handle.c | 11 | ||||
| -rw-r--r-- | ui.c | 4 | 
3 files changed, 10 insertions, 9 deletions
| @@ -115,9 +115,9 @@ void uiShow(void);  void uiHide(void);  void uiDraw(void);  void uiShowID(size_t id); -void uiWrite(size_t id, enum Heat heat, const struct tm *time, const char *str); +void uiWrite(size_t id, enum Heat heat, const time_t *time, const char *str);  void uiFormat( -	size_t id, enum Heat heat, const struct tm *time, const char *format, ... +	size_t id, enum Heat heat, const time_t *time, const char *format, ...  ) __attribute__((format(printf, 4, 5)));  static inline enum Color hash(const char *str) { @@ -71,12 +71,13 @@ static void require(struct Message *msg, bool origin, size_t len) {  	}  } -static const struct tm *tagTime(const struct Message *msg) { +static const time_t *tagTime(const struct Message *msg) { +	static time_t time; +	struct tm tm;  	if (!msg->tags[TagTime]) return NULL; -	static struct tm time; -	char *rest = strptime(msg->tags[TagTime], "%FT%T", &time); -	time.tm_gmtoff = 0; -	return (rest ? &time : NULL); +	if (!strptime(msg->tags[TagTime], "%FT%T", &tm)) return NULL; +	time = timegm(&tm); +	return &time;  }  typedef void Handler(struct Message *msg); @@ -372,7 +372,7 @@ void uiShowID(size_t id) {  	statusUpdate();  } -void uiWrite(size_t id, enum Heat heat, const struct tm *time, const char *str) { +void uiWrite(size_t id, enum Heat heat, const time_t *time, const char *str) {  	(void)time;  	struct Window *window = windowFor(id);  	waddch(window->pad, '\n'); @@ -387,7 +387,7 @@ void uiWrite(size_t id, enum Heat heat, const struct tm *time, const char *str)  }  void uiFormat( -	size_t id, enum Heat heat, const struct tm *time, const char *format, ... +	size_t id, enum Heat heat, const time_t *time, const char *format, ...  ) {  	char buf[1024];  	va_list ap; | 
