code that uses errno is also a bit harder to understand. I like the way Rust does it -- if a function can fail, it returns a Result.
Yes, we can do better. Yes, we probably should do better. But in some cases you really have to think through every edge case and in the end someone has to do it. So just be grateful for what we have.