chiark / gitweb /
integrate many changes from James Troup, part of #102626