ent='cgit 1.4.1'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/custom.css'/>
<link rel='alternate' title='Atom feed' href='https://git.causal.agency/torus/atom/.gitignore?h=v2' type='application/atom+xml'/>
<link rel='vcs-git' href='https://git.causal.agency/torus' title='torus Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='main'><a href='/'>index</a> : <a href='/torus/'>torus</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='02bb28d98b614303f4a0dbcc4ea2f327ac46ed80'/><input type='hidden' name='showmsg' value='1'/><select name='h' onchange='this.form.submit();'>
<option value='1e69ed10cfe61c82b58b98d82ecba3c31163b44f'>this commit</option>
<optgroup label='branches'><option value='ansi'>ansi</option>
<option value='backport'>backport</option>
<option value='cgi'>cgi</option>
<option value='daemon'>daemon</option>
<option value='master'>master</option>
<option value='v1'>v1</option>
<option value='v2' selected='selected'>v2</option>
</optgroup></select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>collaborative ASCII art
</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/torus/about/?h=v2'>about</a> <a href='/torus/?h=v2'>summary</a> <a href='/torus/refs/?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80'>refs</a> <a class='active' href='/torus/log/.gitignore?h=v2&amp;showmsg=1&amp;follow=1'>log</a> <a href='/torus/tree/.gitignore?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80'>tree</a> <a href='/torus/commit/.gitignore?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80&amp;follow=1'>commit</a> <a href='/torus/diff/.gitignore?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80&amp;follow=1'>diff</a> <a href='https://ascii.town'>homepage</a></td><td class='form'><form class='right' method='get' action='/torus/log/.gitignore'>
<input type='hidden' name='h' value='v2'/><input type='hidden' name='id' value='02bb28d98b614303f4a0dbcc4ea2f327ac46ed80'/><input type='hidden' name='showmsg' value='1'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/torus/log/?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80&amp;showmsg=1&amp;follow=1'>root</a>/<a href='/torus/log/.gitignore?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80&amp;showmsg=1&amp;follow=1'>.gitignore</a> (<a href='/torus/log/.gitignore?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80&amp;showmsg=1'>unfollow</a>)</div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/torus/log/.gitignore?h=v2&amp;id=02bb28d98b614303f4a0dbcc4ea2f327ac46ed80&amp;follow=1'>Collapse</a>)</th><th class='left'>Author</th></tr>
<tr class='logheader'><td><span title='2018-03-05 12:55:18 -0500'>2018-03-05</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=8a4618a20339ed233cc5e5a6a4e32c4344f97c1c&amp;follow=1'>Clean up spawn constants</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2018-03-05 12:54:26 -0500'>2018-03-05</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=737c28c63c525fcc033bd9f0adb36e2c65d9f6a8&amp;follow=1'>Rename Tile timestamps {create,modify,access}Time</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2018-03-05 12:45:17 -0500'>2018-03-05</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=f883e5bf73cc11f545ef5a72cbebf8f2aeea69da&amp;follow=1'>Pack message type enums</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2018-03-05 12:39:40 -0500'>2018-03-05</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=456b632b849de3a9615ef17b51cf27046234f6f4&amp;follow=1'>Undef COLOR_ constants in torus.h</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2018-03-05 12:37:52 -0500'>2018-03-05</span></td><td class='logsubject'><a href='/torus/commit/Makefile?h=v2&amp;id=6f067e41c8163982310546246a5d5b64457f078f&amp;follow=1'>Generate tags</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-10-03 12:32:05 -0400'>2017-10-03</span></td><td class='logsubject'><a href='/torus/commit/Makefile?h=v2&amp;id=482b094a794c56a2052be81fdb50d3da1e87d15d&amp;follow=1'>Simplify Makefile with pattern rule</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Insert rant about how GNU make handles the .c rule with extra
dependencies.

Also I don't care that everything links curses now.


</td></tr>
<tr class='logheader'><td><span title='2017-09-27 15:28:16 -0400'>2017-09-27</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=e3604c1fe2a8cf89e5d9d1e2919da103127af2dd&amp;follow=1'>Remove leading blank lines</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-09-27 15:25:58 -0400'>2017-09-27</span></td><td class='logsubject'><a href='/torus/commit/README?h=v2&amp;id=484c8a39e1cec59144babfcc0466c69557e5030b&amp;follow=1'>Add merge.c to README</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-09-03 15:34:21 -0400'>2017-09-03</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=v2&amp;id=811419e17b70f93cb85fc26c9b7227f53349a7a7&amp;follow=1'>Assert client coords are valid after movement</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-09-03 14:57:17 -0400'>2017-09-03</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=7a95cab1c4f9bd8abfc721af63b7a33096d8dfb9&amp;follow=1'>Relicense AGPL</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
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.


</td></tr>
<tr class='logheader'><td><span title='2017-09-01 13:55:48 -0400'>2017-09-01</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=fbb416f2bdd9dedcbc7b4471af335e2b65331953&amp;follow=1'>Revert "Add client readOnly mode"</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This reverts commit 34f25ae40a3db9369e9d98b3814f2b93bbc21451.


</td></tr>
<tr class='logheader'><td><span title='2017-09-01 12:33:54 -0400'>2017-09-01</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=v2&amp;id=0dae2c10c7db909964d0c00607e983c1fc9db978&amp;follow=1'>Remove clientRemove call from clientCast</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
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.


</td></tr>
<tr class='logheader'><td><span title='2017-09-01 00:08:07 -0400'>2017-09-01</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=34f25ae40a3db9369e9d98b3814f2b93bbc21451&amp;follow=1'>Add client readOnly mode</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-08-31 15:37:36 -0400'>2017-08-31</span></td><td class='logsubject'><a href='/torus/commit/merge.c?h=v2&amp;id=aa81ed84fc03060ea270766427d9e3232d130855&amp;follow=1'>Clean up merge tool</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Choose the version with the most recent access if the modify times are
the same.


</td></tr>
<tr class='logheader'><td><span title='2017-08-31 13:45:12 -0400'>2017-08-31</span></td><td class='logsubject'><a href='/torus/commit/merge.c?h=v2&amp;id=cf94e1b5a227b0a64eae2de78884c14b44dada6b&amp;follow=1'>Choose B for tiles with equal modify times</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This way newer access counts and times will be preserved.


</td></tr>
<tr class='logheader'><td><span title='2017-08-31 01:00:02 -0400'>2017-08-31</span></td><td class='logsubject'><a href='/torus/commit/merge.c?h=v2&amp;id=ccf62ec6e3bbf785928962223221eefc8cfef653&amp;follow=1'>Add quick data file merge tool</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Hopefully I won't have to use it ever again.


</td></tr>
<tr class='logheader'><td><span title='2017-08-30 11:16:22 -0400'>2017-08-30</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=v2&amp;id=3a556f5f020d627e40b002be5370799f411e7869&amp;follow=1'>Use only foreground color for selecting spawn</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-08-29 18:33:59 -0400'>2017-08-29</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=931289b9c11fbf1ba61442f83b3199e44bebaaf2&amp;follow=1'>Add four additional spawns</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-08-28 23:38:40 -0400'>2017-08-28</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=66761cd30ee1da5b820c89c38fac6caf42fbe715&amp;follow=1'>Add respawning</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-08-26 23:46:14 -0400'>2017-08-26</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=v2&amp;id=0fd1719a5de2fa9ca11f57564ee55cf0608bce16&amp;follow=1'>Move license above includes</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Why was it down there?


</td></tr>
<tr class='logheader'><td><span title='2017-08-26 19:32:55 -0400'>2017-08-26</span></td><td class='logsubject'><a href='/torus/commit/snapshot.sh?h=v2&amp;id=49c49d4646aba28e1b92681af2e7f476607f5c7b&amp;follow=1'>Snapshot metadata</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-08-26 16:51:14 -0400'>2017-08-26</span></td><td class='logsubject'><a href='/torus/commit/README?h=v2&amp;id=77c3f17ae4e84fb83c6656f1b8496958f573a44b&amp;follow=1'>Add meta.c to README</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
</td></tr>
<tr class='logheader'><td><span title='2017-08-26 16:47:57 -0400'>2017-08-26</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=v2&amp;id=c1eee615c85ef9aebbb1b86b372535e61ca8d6ce&amp;follow=1'>Use Makefile</a></td><td>June McEnroe