The lack of errno setting is allowed by the C standard with 7.3.2:
"An implementation may set errno but is not required to."
The POSIX docs all have language like this for complex calls:
"No errors are defined."
But by default, we must allow that an implementation could set errno.