Is it necessary to check for errors after calling uname(2)
?
According to the manual page:
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
and under the ERRORS heading,
EFAULT buf is not valid.
is the only error listed.
Can I assume, therefore, that uname
will never fail if given a valid struct utsname
buffer?
No.
Just because
EFAULT
is the onlyerrno
listed, it doesn't meanuname
will never fail as long as you pass a valid buffer. It could fail for any other reason. i.e. ifuname
's return code is-1
, then it failed irrespective of the value oferrno
.errno
is only meaningful if the function/system call indicates failure; it doesn't, on its own, define the success/failure of a library function/syscall.