uname(3) function returns 0 on successful and -1 on failure. "non-negative value" is wrong here.
Index: uname.3 =================================================================== RCS file: /cvs/src/lib/libc/gen/uname.3,v retrieving revision 1.15 diff -u -p -r1.15 uname.3 --- uname.3 21 Jan 2014 03:15:45 -0000 1.15 +++ uname.3 9 Oct 2016 17:50:16 -0000 @@ -65,7 +65,7 @@ Machine hardware platform. .Sh RETURN VALUES The .Fn uname -function returns a non-negative value if successful; +function returns 0 if successful; otherwise the value -1 is returned and the global variable .Va errno is set to indicate the error.