errno is irrelevant. Some code duplication can be reduced if perr() is variadic and perrx() is available.