Commit Briefs
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
allow Tread to fill a message
a message of `msize' len is valid, we just need to make sure to _not_ overflow it.
fail on "jumbo" requests (except for Twrite)
except for Twrite, all other requests are passed via a single imsg. We don't handle "jumbo" request for anything outside Twrite, nor it does make sense actually, so let's drop it. (well, for Twstat an argument can be made, maybe)
allow Twrite with size bigger than ~16K
Until now I've been using a single imsg to handle each messages and the imsg framework has a limit of around 16K for message. For almost all requests, this is fine. Except for Twrite and Tread. This is an attempt to make Twrite handle bigger buffers. The listener process just looks at how big a request is and split it up in multiple messages and the client process tries to remember the fid, position and missing data to continue the write. This means that a single Twrite can be split up in multiple write(2)s.
fix twstat handling of mode bits
twstat was truncating out the user mode bits. Found the hard way by cage.
stat: fix `mode' format
Select only the lower two and set the correct bit for directory entries. While the lower two bytes seems to behave just as on UNIX, the upper ones don't (at least on OpenBSD.)