Of note is that `unlockpt` is required, both by the standard, and our
implementation. This has been taken care of inside of `openpty`, which
is the only non-libc way we are acquiring ptys. Additionally, it has
been modified such that it is POSIX compliant, so any outside future
changes to ptyd will not affect it.
This is part of my ptyd changes (#100). This can be safely merged once
the changes from base/ and userutils/ are merged alongside it.
Additionally, this adds the `SYMLOOP_MAX` constant in `limits.h` to
replace the `MAX_LEVEL` magic number used during symlink resolution.
`fstat` was kept because it is more difficult than the others to do a
drop-in replacement in terms of `fstatat` for since a naive approach
would cause mutual recursion.
I copied the constants and definitions from musl which we can presume is
correct. Relibc is missing some features which affects our sysconf as
well, such as constants in limits.h or a working resources.h.
Also make fields in `termios` public; required for modifying them.
There's an new type of test: `EXPECT_INPUT_BINS`. These require a `.exp`
file to be present along with the `.c` file. The `.exp` file takes the
produced binary as an argument and sends input to the program. This is
useful for testing functions like `getpass()`.