~kennylevinsen/seatd

connection: Shrink buffer sizes

A connection contains 4 connection buffers: in, out, fds_in and fds_out.
The connection_buffer struct previously embedded a fixed-size 1KB
ring-buffer, leading to the connection structure being in excess of 4KB.

This is way more buffer than is needed, especially for fd buffers where
only 8 fds were allowed buffered, and only one direction was ever
needed.  However, as the buffer is inline in the generic
connection_buffer struct, the sizes cannot differ between types.

To allow per-connection_buffer sizing, the connection_buffer struct is
changed to have a char pointer and a capacity instead of an inline
buffer. Then, to avoid needing to alloc the buffers, a shared buffer is
placed in the connection struct. To set this all up, an init method is
added to the connection. This allows the fd buffers to be sizeof(int)*8,
while data buffers can be 256 bytes.

With this, raw buffer size for a connection drops from 4KB to 544B.
Add platform support note to README
seatd: Perform clean server shutdown
ci: Add completion print to smoketest
ci: Add Alpine/FreeBSD builtin smoketest
simpletest: Take file to open as argument
ci: Add FreeBSD
FreeBSD compiler warning fix
client: Implement get_peer for FreeBSD
devices: Use path to check device type

FreeBSD device numbers cannot be used to check the type of a device, as
they are merely unique filesystem IDs.

As the paths we use have been sanitized with realpath, we can simply use
the path to check if a requested file is an evdev or drm device. This
also allows us to make the check before the file is opened.
devices: FreeBSD support in drm and evdev code
log: Avoid unnecessary GNU extension
terminal: FreeBSD VT and KD handling
meson: FreeBSD options
meson: Set _FORTIFY_SOURCE=2 for optimized builds
seat: Use PATH_MAX long array for realpath
meson: Add summary printout
seat: remove_client return value was inverted
ci: Initial CI
Next