std.fs.File: Fix metadata error check on Linux

On Linux, File.metadata calls the statx syscall directly. As such, the
return value is the error code. Previously, it handled the error with
`posix.errno`, which when libc is linked, treats the return value as a
value set to -1 if there is an error with the error code in errno. If
libc wasn't linked, it would be handled correctly.

In the Linux with libc linked case, this would cause the error result to
always be treated as success (err val != -1), even when an error
occurred.
This commit is contained in:
Archit Gupta 2024-10-30 22:25:34 -07:00 committed by Alex Rønne Petersen
parent f2dcfe0e40
commit a916bc7fdd

View File

@ -1072,7 +1072,7 @@ pub fn metadata(self: File) MetadataError!Metadata {
&stx, &stx,
); );
switch (posix.errno(rc)) { switch (linux.E.init(rc)) {
.SUCCESS => {}, .SUCCESS => {},
.ACCES => unreachable, .ACCES => unreachable,
.BADF => unreachable, .BADF => unreachable,