summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--chat.h4
-rw-r--r--handle.c11
-rw-r--r--ui.c4
3 files changed, 10 insertions, 9 deletions
diff --git a/chat.h b/chat.h
index 76d69c9..9165c13 100644
--- a/chat.h
+++ b/chat.h
@@ -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) {
diff --git a/handle.c b/handle.c
index 4bc2e3d..ef49f7c 100644
--- a/handle.c
+++ b/handle.c
@@ -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);
diff --git a/ui.c b/ui.c
index 072ee84..e2746f1 100644
--- a/ui.c
+++ b/ui.c
@@ -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;
ef='/torus/commit/Makefile?h=v2&id=6369fae3d92de8b77ede1007da0881f14684e293&follow=1'>Link with -lmJune McEnroe Darwin's lack of separation strikes again. 2018-07-22Add map to clientJune McEnroe 2018-07-21Refactor readInput for each modeJune McEnroe 2018-07-19Add ARRAY_LEN macroJune McEnroe 2018-07-17Add server map generationJune McEnroe 2018-07-17Tabify sourceJune McEnroe And other style changes. 2018-05-13Fix ncurses color pair numberingJune McEnroe This was dumb. Of course all the color pairs fit in 64, but I was shifting too much because my own representation includes the bright bit. 2018-04-09Use anonymous unionJune McEnroe 2018-04-09Replace #define with enum or const where possibleJune McEnroe 2018-03-31Link against ncursesJune McEnroe 2018-03-05Miscellaneous code cleanupJune McEnroe 2018-03-05Pass message structs by valueJune McEnroe 2018-03-05Use stdio in merge and metaJune McEnroe 2018-03-05Clean up spawn constantsJune McEnroe 2018-03-05Rename Tile timestamps {create,modify,access}TimeJune McEnroe 2018-03-05Pack message type enumsJune McEnroe 2018-03-05Undef COLOR_ constants in torus.hJune McEnroe 2018-03-05Generate tagsJune McEnroe 2017-10-03Simplify Makefile with pattern ruleJune McEnroe Insert rant about how GNU make handles the .c rule with extra dependencies. Also I don't care that everything links curses now. 2017-09-27Remove leading blank linesJune McEnroe 2017-09-27Add merge.c to READMEJune McEnroe 2017-09-03Assert client coords are valid after movementJune McEnroe 2017-09-03Relicense AGPLJune McEnroe I know it's already published under a permissive license in what is probably its final form, but I want to license it AGPL anyway on principle following some conversations I had about open source, corporations and copyleft. 2017-09-01Revert "Add client readOnly mode"June McEnroe This reverts commit 9a6c9c91c8092603b914cc0b3085d059e162ca29. 2017-09-01Remove clientRemove call from clientCastJune McEnroe If an error occurs on a client socket during a broadcast, that client will show up in the kqueue loop with EV_EOF and get removed that way. Tested by sending SIGKILL to a client and watching its cursor disappear. 2017-09-01Add client readOnly modeJune McEnroe 2017-08-31Clean up merge toolJune McEnroe Choose the version with the most recent access if the modify times are the same. 2017-08-31Choose B for tiles with equal modify timesJune McEnroe This way newer access counts and times will be preserved. 2017-08-31Add quick data file merge toolJune McEnroe Hopefully I won't have to use it ever again. 2017-08-30Use only foreground color for selecting spawnJune McEnroe 2017-08-29Add four additional spawnsJune McEnroe 2017-08-28Add respawningJune McEnroe 2017-08-26Move license above includesJune McEnroe Why was it down there? 2017-08-26Snapshot metadataJune McEnroe 2017-08-26Add meta.c to READMEJune McEnroe 2017-08-26Use MakefileJune McEnroe