Right, but I think it's done like this in C because they want to have both the error code and the error condition in one value. I always found this so strange :)

In UNIX where you have both separated, you can do things like : `if rm -rf directory ; then ... fi` => it's true when the `rm` was successful, but $? is non-zero if it's not successful.

Thanks !