Gopher server written in Common Lisp (for SBCL/FreeBSD)
This software (rather intensively) uses unportable features from both SBCL and FreeBSD. The main unportable feature from FreeBSD is its extended attributes, of which all those used are in the "user" namespace (see getextattr(8) and extattr(2)). These are used to affect how files are displayed in directory listings.
I caved D: The stupid thing works on stupid Linux now (still only SBCL). Extended attributes are the same, but prefixed with "user." because Linux. It gets worse. It's been ported to Windows, of all things. Extended attributes are the same, just implemented as Alternate Data Streams.
Now depends on solipsism (https://github.com/heddwch/solipsism) just to make it more of a pain in the ass. You're welcome. :D
Extended attributes, their functions, and their defaults if not specified.
The Gopher type for a resource. Autodetected based upon file extension, falling back to '0' for files and '1' for directories.
The name displayed for a resource in directory listings. Defaults to the file name.
The path of the file. Defaults to actual path relative to the local gopher root.
What server the file is hosted on. Defaults to the local host.
What port the file is available on. Defaults to the port specified to (serve) or 70.
Only valid for directories. Specifies a file to be prepended to this directory's listing. Defaults to none.
Directory listings are sorted case-sensitively by the determined selector.