a 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/src/atom/port/file2c?h=master' type='application/atom+xml'/>
<link rel='vcs-git' href='https://git.causal.agency/src' title='src Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='main'><a href='/'>index</a> : <a href='/src/'>src</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='dc173ca9c660f775675d6c712f82dcedccdf9db0'/><input type='hidden' name='showmsg' value='1'/><select name='h' onchange='this.form.submit();'>
<option value='a1ce71dcd1d46119de3390970ac7864511cd36f6'>this commit</option>
<optgroup label='branches'><option value='master' selected='selected'>master</option>
</optgroup></select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>dontfiles
</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/src/'>summary</a> <a href='/src/refs/?id=dc173ca9c660f775675d6c712f82dcedccdf9db0'>refs</a> <a class='active' href='/src/log/port/file2c?showmsg=1&amp;follow=1'>log</a> <a href='/src/tree/port/file2c?id=dc173ca9c660f775675d6c712f82dcedccdf9db0'>tree</a> <a href='/src/commit/port/file2c?id=dc173ca9c660f775675d6c712f82dcedccdf9db0&amp;follow=1'>commit</a> <a href='/src/diff/port/file2c?id=dc173ca9c660f775675d6c712f82dcedccdf9db0&amp;follow=1'>diff</a></td><td class='form'><form class='right' method='get' action='/src/log/port/file2c'>
<input type='hidden' name='id' value='dc173ca9c660f775675d6c712f82dcedccdf9db0'/><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='/src/log/?id=dc173ca9c660f775675d6c712f82dcedccdf9db0&amp;showmsg=1&amp;follow=1'>root</a>/<a href='/src/log/port?id=dc173ca9c660f775675d6c712f82dcedccdf9db0&amp;showmsg=1&amp;follow=1'>port</a>/<a href='/src/log/port/file2c?id=dc173ca9c660f775675d6c712f82dcedccdf9db0&amp;showmsg=1&amp;follow=1'>file2c</a> (<a href='/src/log/port/file2c?id=dc173ca9c660f775675d6c712f82dcedccdf9db0&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='/src/log/port/file2c?id=dc173ca9c660f775675d6c712f82dcedccdf9db0&amp;follow=1'>Collapse</a>)</th><th class='left'>Author</th></tr>
<tr class='logheader'><td><span title='2021-09-22 21:13:12 +0000'>2021-09-22</span></td><td class='logsubject'><a href='/src/commit/www/temp.causal.agency/up.c?id=dbcf4c53325774c83d29cdd96a3e822e71029221&amp;follow=1'>Call sandbox in CGI mode</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Otherwise upload won't actually work.


</td></tr>
<tr class='logheader'><td><span title='2021-09-22 19:43:54 +0000'>2021-09-22</span></td><td class='logsubject'><a href='/src/commit/www/temp.causal.agency/up.c?id=6ded0a072c0e63c8062d5429deee7e988f24afe9&amp;follow=1'>Support HTTP PUT in up</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
For use by Palaver[1]. Unfortunately, at least in the current App
Store version of Palaver, this doesn't work correctly with basic
auth.

[1]: https://palaverapp.com/guides/commands/set.html#ui-image_service


</td></tr>
<tr class='logheader'><td><span title='2021-09-22 15:40:24 +0000'>2021-09-22</span></td><td class='logsubject'><a href='/src/commit/www/git.causal.agency/cgit/favicon.ico?id=b66b864a89e0a956e9d5d8909ccb3084df3c273e&amp;follow=1'>Remove default favicon</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
I hate these things and also this one sucks.


</td></tr>
<tr class='logheader'><td><span title='2021-09-21 22:04:26 -0400'>2021-09-21</span></td><td class='logsubject'><a href='/src/commit/bin/pngo.c?id=f6e92ca67f72999ae9b520c9008a4855a339620b&amp;follow=1'>Use Z_FILTERED strategy</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='2021-09-21 21:33:33 -0400'>2021-09-21</span></td><td class='logsubject'><a href='/src/commit/bin/pngo.c?id=d16660acf755488a7ec936ab959b82dcb219ac67&amp;follow=1'>Recalculate various lengths only as needed</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This actually speeds things up quite a bit, saving roughly a second
on a big PNG screenshot. Almost all the remaining time is spent in
deflate.


</td></tr>
<tr class='logheader'><td><span title='2021-09-21 15:02:46 -0400'>2021-09-21</span></td><td class='logsubject'><a href='/src/commit/bin/pngo.c?id=9fc326b10ab2e20a8bdb100bbfef24e8b8f3934f&amp;follow=1'>Rewrite pngo, add explicit options</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Interesting to see how my code habits have changed.


</td></tr>
<tr class='logheader'><td><span title='2021-09-16 09:34:37 -0400'>2021-09-16</span></td><td class='logsubject'><a href='/src/commit/bin/c11.l?id=be809c51a57225e17897ca9e5243c259c65895f0&amp;follow=1'>Fix /* **/ comment matching</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='2021-09-15 19:02:12 -0400'>2021-09-15</span></td><td class='logsubject'><a href='/src/commit/bin/typer.c?id=e4e49b1b03e6eb666d6efaf2850cc15f2f71b713&amp;follow=1'>Remove typer, add downgrade 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='2021-09-15 12:13:31 -0400'>2021-09-15</span></td><td class='logsubject'><a href='/src/commit/bin/man1/downgrade.1?id=9932abb09e3204d6cbd44c92f3678b6184625693&amp;follow=1'>Set bot mode on downgrade</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='2021-09-15 14:48:03 +0000'>2021-09-15</span></td><td class='logsubject'><a href='/src/commit/bin/downgrade.c?id=68f41009e9283757b672bbafcaa7bb0bdd121e32&amp;follow=1'>Enter capsicum in downgrade</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='2021-09-15 10:46:21 -0400'>2021-09-15</span></td><td class='logsubject'><a href='/src/commit/bin/downgrade.c?id=48e911f761cb4593706bfeb721b478bf4e7ea7c6&amp;follow=1'>Factor out common parts of downgrade messages</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Also bump the message cap to 1024 because that is ostensibly useful
for replying to older messages.


</td></tr>
<tr class='logheader'><td><span title='2021-09-14 23:37:51 -0400'>2021-09-14</span></td><td class='logsubject'><a href='/src/commit/bin/man1/downgrade.1?id=55dfaa3c16c9bfda165d823d74034fda0dc6b4f6&amp;follow=1'>Add downgrade IRC bot</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='2021-09-14 23:20:57 -0400'>2021-09-14</span></td><td class='logsubject'><a href='/src/commit/bin/bibsort.pl?id=b124bde2b6ec698b5468167cfaea63b598f77bd0&amp;follow=1'>Sort by title if authors match</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
There are probably better things to sort by but title definitely
always exists.


</td></tr>
<tr class='logheader'><td><span title='2021-09-13 09:14:02 -0400'>2021-09-13</span></td><td class='logsubject'><a href='/src/commit/bin/htagml.c?id=abda08060ecf83cf2ae3b47e7ba8af3701a5fb38&amp;follow=1'>Swap-remove tags as they're found</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This makes it even faster. From ~1s on a sqlite3.c amalgamation to
~0.85s.


</td></tr>
<tr class='logheader'><td><span title='2021-09-12 21:02:19 -0400'>2021-09-12</span></td><td class='logsubject'><a href='/src/commit/bin/htagml.c?id=e7b4d18510cf26a0a72fac72604f930d62b4fa7d&amp;follow=1'>Replace htagml regex with strncmp</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
Since ctags only ever produces regular expressions of the form
/^re$/ or /^re/ with no other special characters, instead unescape
the pattern and simply use strncmp.

Running on a sqlite3.c amalgamation, the regex version takes ~37s
while the strncmp version takes ~1s, producing identical output.
Big win!


</td></tr>
<tr class='logheader'><td><span title='2021-09-11 15:11:48 -0400'>2021-09-11</span></td><td class='logsubject'><a href='/src/commit/bin/git-comment.pl?id=9d3e8a88a0d06310ff0a9309a5439ab97b8f922f&amp;follow=1'>Also defer printing comment for lone close-parens</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='2021-09-10 20:06:21 -0400'>2021-09-10</span></td><td class='logsubject'><a href='/src/commit/www/text.causal.agency/Makefile?id=ae5823a4cda93b6def9ae017ba3d93daa2eceeb9&amp;follow=1'>Publish "git-comment"</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='2021-09-10 17:10:15 -0400'>2021-09-10</span></td><td class='logsubject'><a href='/src/commit/bin/man1/git-comment.1?id=4c6cb6a661e970cf6951f627390f65b59ec8a7de&amp;follow=1'>Add git comment --pretty option</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='2021-09-08 23:32:51 -0400'>2021-09-08</span></td><td class='logsubject'><a href='/src/commit/bin/git-comment.pl?id=774decfc311710c12a27a3c5cd827c96fea4d332&amp;follow=1'>Defer printing comment if line is blank or closing brace</a></td><td>June McEnroe</td></tr>
<tr class='nohover-highlight'><td/><td colspan='3' class='logmsg'>
This fixes badly indented comments.


</td></tr>
<tr class='logheader'><td><span title='2021-09-08 22:17:13 -0400'>2021-09-08</span></td><td class='logsubject'><a href='/src/commit/bin/man1/git-comment.1?id=1a5ecb6c6d42d8e0a9284897c90d6047f8ad8842&amp;follow=1'>Up default min-repeat to 30 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='2021-09-08 22:11:15 -0400'>2021-09-08</span></td><td class='logsubject'><a href='/src/commit/bin/git-comment.pl?id=5908b0ae469e5d20d6b05eb3aabf2ea7b3d65311&amp;follow=1'>Handle dirty lines in git-comment</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='2021-09-08 21:59:30 -0400'>2021-09-08</span></td><td class='logsubject'><a href='/src/commit/bin/man1/git-comment.1?id=a237a866bba3b7c4618ccef1347c0c01009e66f3&amp;follow=1'>Document and install git-comment</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='2021-09-08 21:05:33 -0400'>2021-09-08</span></td><td class='logsubject'><a href='/src/commit/bin/git-comment.pl?id=ce5d7b18c0143dda7b3c9a78260b6e5ce7eec11a&amp;follow=1'>Add repeat and all options to git-comment</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='2021-09-08 19:05:36 -0400'>2021-09-08</span></td><td class='logsubject'><a href='/src/commit/bin/git-comment.pl?id=c06e03fe68c3f55ff251607a534c75ac5d419af8&amp;follow=1'>Add group threshold to git-comment</a></td><td>June McEnroe