Stuff that's still to-do ======================== - compile with -D_FILE_OFFSET_BITS=64 on linux. related: this is needed only for glibc or musl too? - (possibly related) find out what pread(2) black magic we can do to read stuff on 32 bits portably. - rework the ninepscript so tests are parsed and executed by the _kamid user and not by root. - tweak iounit so it's always lower than the choosen msize? - fill user and group name in struct stat. The problem is that, being chrooted, we don't have access to /etc/passwd nor /etc/group. We could use setpassent(3) and setgroupent(3), but if they change in the meantime we can't do anything. Another solution would be to not to chroot(2) and just switch to the targeted user. - find a way to avoid opening directories twice. During a walk we open the directories, but if later we try to open that fid, we end up re-opening the same directory again! It's not easy to avoid because we need to fdopendir(3) and upon closedir it'll close the file descriptor, while the same file descriptor could be shared with other fids (f->dir is a shared read-only resource). One solution may be to not use readdir and roll our own on top of getdents(2) and lseek(2), but that may not be portable. - reply with an Rerror in kamid/listener.c:/^client_read when we get an invalid message (too big or too small) before closing the connection. - how (if) handle serialize_stat overflow? If the info for the file we want to give don't fit inside 16 bit we're currently either skipping the file entry (if during a directory read) or return an error (during Tstat.) - artworks! I'd like for every release of kamid to be accompanied by a hand-drawed artwork, so some artworks for future releases are welcome! See the art/ directory for previous versions.