Commits


endian.h is not universally available FreeBSD and NetBSD have sys/endian.h, on MacOS we need to use the functions from libkern/OSByteOrder.h see github issue #1


refactor kamiftp internals use a FILE (constructed either via fdopen over a socket or funopen over libtls) for remote I/O


include compat for reallocarray too reported by @Et7f3 in github issue #1, thanks!


work around macos lack of accept4(2), SOCK_CLOEXEC and NONBLOCK I always forget that they're not available on darwin; reported by @Et7f3 in github issue #1


add blank before comma, reported by man -Tlint


kamiftp.1: specify how USER is used


add TODO


readability


specify the suite components


work around missing LOGIN_NAME_MAX Both Linux and OpenBSD have LOGIN_NAME_MAX available when including limits.h, FreeBSD, Darwin and possibly others don't. FreeBSD (and maybe Darwin) have MAXLOGNAME, so try to use that if available. Otherwise use _POSIX_LOGIN_NAME_MAX, but only has a fallback since it has a lower value (9 at the time of writing). If everything fails, use 32 which is what OpenBSD use by default; OpenSMTPd also defaults to it. See also github issue #1


fix url to the git repo


ftp: issue slightly smaller requests to please u9fs u9fs like to return "i/o count too large" on reads/writes that exceeds msize - 24. seems arbiratry, as in theory we should be able to issue a Tread/Twrite for msize - (HEADERSIZE + 4) = msize - 13. Don't know where the other eleven bits come from. To conclude the rant: even if a client issues a Tread/write too large, why don't just return a value smaller than requested? It's explicitly documented in the plan9 manpage for Tread.


ftp: allow user@host syntax; guard against empty user or port


specify that the syntax for the host optionally accepts a port number


add links to the shasums and current key