... I would like to remind folks that on some platforms, one cannot just use "errno = 0". On those platforms calling a function is required to set errno.
Except that errno=0 works fine on any platform with a standard- conforming C implementation, and this isn't even a fuzzy POSIX issue -- it's a requirement of the C standard. We can define piles of macros instead, but I expect that, as the years drag on, people will "forget" to use them.