tive ASCII art
</title>
<meta name='generator' content='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=cgi' 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='d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb'/><input type='hidden' name='showmsg' value='1'/><select name='h' onchange='this.form.submit();'>
<option value='bceb3850198fadbbae525e5583af385c7583f2d2'>this commit</option>
<optgroup label='branches'><option value='ansi'>ansi</option>
<option value='backport'>backport</option>
<option value='cgi' selected='selected'>cgi</option>
<option value='daemon'>daemon</option>
<option value='master'>master</option>
<option value='v1'>v1</option>
<option value='v2'>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=cgi'>about</a> <a href='/torus/?h=cgi'>summary</a> <a href='/torus/refs/?h=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb'>refs</a> <a class='active' href='/torus/log/.gitignore?h=cgi&amp;showmsg=1&amp;follow=1'>log</a> <a href='/torus/tree/.gitignore?h=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb'>tree</a> <a href='/torus/commit/.gitignore?h=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb&amp;follow=1'>commit</a> <a href='/torus/diff/.gitignore?h=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb&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='cgi'/><input type='hidden' name='id' value='d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb'/><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=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb&amp;showmsg=1&amp;follow=1'>root</a>/<a href='/torus/log/.gitignore?h=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb&amp;showmsg=1&amp;follow=1'>.gitignore</a> (<a href='/torus/log/.gitignore?h=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb&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=cgi&amp;id=d3c3c4c561fc96e3a753e9e4c2996a19eb06a9eb&amp;follow=1'>Collapse</a>)</th><th class='left'>Author</th></tr>
<tr class='logheader'><td><span title='2017-08-08 23:33:02 -0400'>2017-08-08</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=a4898b1bd4629cc2ef0e6a3f2e245449ce9d3c8c&amp;follow=1'>Check COLOR_PAIRS in client</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-08 23:18:35 -0400'>2017-08-08</span></td><td class='logsubject'><a href='/torus/commit/termcap.diff?h=cgi&amp;id=c6b87d4f50d6ec9859488d7ed232ebd501a670e2&amp;follow=1'>Patch termcap of rxvt-256color as well</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-08 21:30:41 -0400'>2017-08-08</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=f000caedde4df752b91c861b56b15e05eadb8234&amp;follow=1'>Add put mode</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This is what replace mode used to do.


</td></tr>
<tr class='logheader'><td><span title='2017-08-08 20:55:44 -0400'>2017-08-08</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=881f64ddfbc6141ac7ed2eacf7bc0de1f49bc67f&amp;follow=1'>Remove MADV_NOSYNC</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
I don't think this has any benefit. It just takes longer to stop the
server because it flushes all the pages then.


</td></tr>
<tr class='logheader'><td><span title='2017-08-08 20:44:22 -0400'>2017-08-08</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=8402acf0fe1451b8508d4d81a2fae8e7927d0720&amp;follow=1'>Completely retry if a send fails during a broadcast</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This fixes a bug where the saved next client to iterate through would
also get removed.

This can result in messages being sent multiple times to a client, but
that will have no negative effect.


</td></tr>
<tr class='logheader'><td><span title='2017-08-08 19:13:06 -0400'>2017-08-08</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=8606c88ea4c2c3740a7e59e7def591e3c4eeced7&amp;follow=1'>Reverse order of main loop</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-08 19:00:54 -0400'>2017-08-08</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=a58e055fa574c29e833f1fdeb098225594496c76&amp;follow=1'>Turn off SIGPIPE at the socket level</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
I imagine it's better to not generate SIGPIPE at all rather than
generate and ignore.


</td></tr>
<tr class='logheader'><td><span title='2017-08-06 15:23:34 -0400'>2017-08-06</span></td><td class='logsubject'><a href='/torus/commit/help.c?h=cgi&amp;id=c2ac12378fa1359419671b5b58ee40ab7584efd2&amp;follow=1'>Rewrite help</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This code is still terrible.


</td></tr>
<tr class='logheader'><td><span title='2017-08-04 23:22:48 -0400'>2017-08-04</span></td><td class='logsubject'><a href='/torus/commit/snapshot.sh?h=cgi&amp;id=20fd08dd6d8bc6b35dc135ab63f8fbe56218a771&amp;follow=1'>Use $() in snapshot.sh</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
I don't know why I wrote ``.


</td></tr>
<tr class='logheader'><td><span title='2017-08-02 01:42:49 -0400'>2017-08-02</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=8e6629ca5bde365470b194c738b09f40867745f2&amp;follow=1'>Move in insert direction on ~</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-02 01:34:33 -0400'>2017-08-02</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=00cb0f8ca430ef97b380f35e11fbb50d3112e8c9&amp;follow=1'>Preserve color on replace</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-02 00:55:52 -0400'>2017-08-02</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=cgi&amp;id=9595969f2e916e800ec029623305920e11ef182b&amp;follow=1'>Split tile access and modify</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-01 00:09:44 -0400'>2017-08-01</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=3c2d8233b880cb22e2330a877f7d9ee1a9a8a5fa&amp;follow=1'>Madvise RANDOM and NOSYNC</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-07-31 23:43:17 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=7e978b57cc75e9802242937253df8b27babb4c6f&amp;follow=1'>Fix removing clients from clientCast</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-07-31 23:40:03 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/chroot.sh?h=cgi&amp;id=ed7646e492853fa577f449fb1be8556a5f8dbf9e&amp;follow=1'>Build with debug info</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-07-31 23:22:21 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=071962a0700f6ed344d91b724b7dc3c7a3b0b426&amp;follow=1'>Don't dump tiles in core</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-07-31 22:14:56 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=5962f9f4a7614da62bdb73954eb624ab19218b1f&amp;follow=1'>Use designated initializers for messages</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
I did not realize this syntax was so powerful.


</td></tr>
<tr class='logheader'><td><span title='2017-07-31 21:30:22 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=cgi&amp;id=87e515b927d15881e39b73e18ac211164f28b88f&amp;follow=1'>Show other clients' cursors</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Also unfuck removing on send failure.


</td></tr>
<tr class='logheader'><td><span title='2017-07-31 20:15:42 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=3d7768d1a6d3d56f9a472f2a2b981be515a3bef0&amp;follow=1'>Perform enter as two moves rather than a loop</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-07-31 19:21:50 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=cgi&amp;id=f7bdd3ce58117d17a24d81eacff41db43fa1f9d8&amp;follow=1'>Track tile access counts</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-07-31 00:32:04 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=7ae0b16aec82ae6ae4023bfd23ddef8ba6965b3a&amp;follow=1'>Adjust move speed in client</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-07-31 00:22:07 -0400'>2017-07-31</span></td><td class='logsubject'><a href='/torus/commit/server.c?h=cgi&amp;id=ca448f3dc88b8737e641cb9019664695eab80e51&amp;follow=1'>Handle large moves</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-07-30 23:19:30 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/chroot.sh?h=cgi&amp;id=80dadfb7533136f7c4631875dc4b9cc089a00f66&amp;follow=1'>Optimize builds for chroot</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-07-30 22:53:29 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=68a8d1388cfaba17b8bc145e66773d042fdebe62&amp;follow=1'>Persist bright across color changes</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-07-30 19:57:01 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/index.html?h=cgi&amp;id=856abdf0227065997231c1dd6c004fb41a7c7d79&amp;follow=1'>Add index.html</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-07-30 19:24:58 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/snapshot.sh?h=cgi&amp;id=7d85d1813ee367c15e42206d582e5aa06e212440&amp;follow=1'>Add snapshot.sh</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-07-30 16:51:51 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/termcap.diff?h=cgi&amp;id=e38d40500934bae533d516e2ba95ef5e3efc6363&amp;follow=1'>Fix termcap patch for background colors</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-07-30 16:30:52 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/help.c?h=cgi&amp;id=a505ca1ee37892e31eb6baeba3a4b8376cdbed57&amp;follow=1'>Update help</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-07-30 16:01:46 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/help.c?h=cgi&amp;id=91b289e91d96178b25b557d008b13d977f3d4638&amp;follow=1'>Fix help to track color</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-07-30 15:56:55 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=1e4da915cc0ff567c9d607a8cb9481a9f0b24c9b&amp;follow=1'>Support background colors</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-07-30 15:40:31 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=cgi&amp;id=fe8ff9c8b368a5ae97ca3dea9472c13afe8e8eae&amp;follow=1'>Track color only client-side</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-07-30 15:05:20 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=16a31d2f7483f21d413efc44f182c85cc40fee89&amp;follow=1'>Add ostensible support for background colors</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-07-30 14:15:15 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=cgi&amp;id=f48c10f46eab1c11827516a0610f7cd71d74bdad&amp;follow=1'>Add tile create and access timestamps</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-07-30 14:08:56 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/torus.h?h=cgi&amp;id=71bab09c60e0d6c1043bebf97a83c41517562dde&amp;follow=1'>Assert stable struct Tile field offsets</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-07-30 13:44:17 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/chroot.sh?h=cgi&amp;id=88dce55272dd95808b91760bf3384f193aa95a9f&amp;follow=1'>Add chroot.sh</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-07-30 12:54:45 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/client.c?h=cgi&amp;id=5913499e9f2f56a59efd7ba8f7b81968b3f1c398&amp;follow=1'>Add ` command</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-07-30 03:16:32 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/sshd_config?h=cgi&amp;id=9460cc38a87617f3551562b340053c0a7a6b85cd&amp;follow=1'>Add sshd_config</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-07-30 03:10:22 -0400'>2017-07-30</span></td><td class='logsubject'><a href='/torus/commit/termcap.diff?h=cgi&amp;id=f9c2dd1b4b6acfcb9cc3d9e69e177e1d9d2597d6&amp;follow=1'>Add termcap patch</a></td><td>June McEnroe