Commit Briefs

Omar Polo

use NL_TEXTMAX for the strerror_r buffer

the strerror_r(3) man page mentions that it returns a message that's up to NL_TEXTMAX bytes long (including the NUL.) strerror_r can fail with ERANGE if the buffer is not large enough, and that's probably the case of some "funny" Rerrors that cage gets from time to time.


Omar Polo

ftp: add lpwd


Omar Polo

ftp: add lcd


Omar Polo

ftp: connect to !tls servers


Omar Polo

more to do




Omar Polo

improve documentation


Omar Polo

implement bye/quit




Omar Polo

fix tremove wrt directories

we can't call unlinkat with `.' as path, so the hackish solution (but also the only viable one I can see) is to unlinkat ../<dirname>. Furthermore, calling unlinkat(f->dir->fd, f->fpath) was incorrect because f->dir->fd already points to the directory.


Omar Polo

s/HAVE_READLINE/HAVE_LIBREADLINE/


Omar Polo

dis-entagle qids from the directory file descriptor

I've been using the qid both as the 9p protocol element *and* as a wrapper with refcounting around a directory file descriptor. I can do better, let's split the qid struct into a "proper" qid and dir. Dir is now the wrapper with refcounting around the directory file descriptor and qid is just the 9p struct. fids are still associated with a dir, but now they store the directory name if they point to the directory. The previous pattern to detect if a fid is pointing to a dir thus changed: instead of assuming that fpath is "", look at the qid struct.