On Thu, 28 Jul 2005, Morten Welinder wrote: > > > I have verified that successful close() after failed mmap() won't reset > > the output of perror() to "Success". > > Does $standard guarantee that? > > In general, successful libc calls can set errno to whatever they > please, except zero. And they sometimes do. This follows from > C99.
Indeed. _always_ save the value of errno before doing any other calls. Even successful calls are perfectly allowed to change errno. "close()" may not _normally_ change errno, but the fact is, not only can close sometimes return an error, but it could validly have some debugging wrapper that does logging, and change errno because of that. Yeah, we'd be better off if UNIX had always used the linux kernel practice of hiding errno as a negative return value (and the "IS_ERR()" test for pointers), but hey, crud happens to the best of us. Linus - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html