July 29, 2021 7:45 AM, "Sergey Bugaev" <[email protected]> wrote:
> On Wed, Jul 28, 2021 at 11:25 PM Sergey Bugaev <[email protected]> wrote: > >> On Wed, Jul 28, 2021 at 10:39 PM <[email protected]> wrote: >> It would be cool to have a gemini translator. It would only take a few 100 >> lines of code. >> >> Oh yes, a Gemini translator actually sounds like a perfect exercise! >> It's not as simple as /hurd/hello or /dev/yes, but still simple >> enough, and would be actually useful for the end users. > > Thinking about it further, > > while it's true that you should be able to write a very simple > trivfs-based Gemini translator that would basically do a request for > each open and let the client read the response body, > > for a more serious, solid Gemini translator you'd want much more than > that. In particular, you'd want the ability to talk about directories > as filesystem nodes even if there's no document at that URL. So for > instance, > > $ settrans gemini: /hypothetical/gemini > $ cat gemini://example.com/foo/bar/hello > Hello > # You'd also want this to work: > $ cd gemini://example.com/foo > $ cat bar/hello > Hello > # ...even if there's nothing (error code 51) at gemini://example.com/foo That would be super cool! > Ideally, cd'ing into a directory would not even cause a network > request, only trying to read a file would. Moreover, you'd want ls(1) > to work, at least somewhat. We could learn a trick from httpfs here: > when asked to list the contents of a directory, fetch the page and > collect links that point to pages inside the directory. For instance, > gemini://gemini.circumlunar.space/ contains a bunch of links to its > subpages, which we would parse out and display as directory entries. > Thankfully, Hurd fully supports treating a single node as both a > directory and a readable file. I wonder if httpfs supports "sitemap.txt" or "sitemap.xml". That would probably be better. > I think this is all implementable, but would require using netfs, > probably overriding netfs_S_dir_lookup (), and quite a bit more than a > few hundred lines of code. :| ahaha. Someday. :) > Sergey
