/development/std/internal/os/darwin.nct
darwin.nct
//! Darwin error classification and syscall constants.
include ./index.nct
#target: "arm64-darwin"
func errno(code: i32): Errno {
return Errno { code: code }
}
#target: "arm64-darwin"
func error_from_errno(value: Errno): OSError {
return OSError {
platform: Platform.macos,
code: value.code,
kind: kind_from_errno(value),
}
}
#target: "arm64-darwin"
func kind_from_errno(value: Errno): OSErrorKind {
// Darwin errno values used by the std syscall wrappers.
if value.code == 4 {
return OSErrorKind.interrupted
}
if value.code == 35 {
return OSErrorKind.would_block
}
if value.code == 2 {
return OSErrorKind.not_found
}
if value.code == 20 {
return OSErrorKind.not_found
}
if value.code == 1 {
return OSErrorKind.permission_denied
}
if value.code == 13 {
return OSErrorKind.permission_denied
}
if value.code == 17 {
return OSErrorKind.already_exists
}
if value.code == 9 {
return OSErrorKind.invalid_input
}
if value.code == 14 {
return OSErrorKind.invalid_input
}
if value.code == 21 {
return OSErrorKind.invalid_input
}
if value.code == 22 {
return OSErrorKind.invalid_input
}
if value.code == 32 {
return OSErrorKind.broken_pipe
}
if value.code == 60 {
return OSErrorKind.timed_out
}
if value.code == 45 {
return OSErrorKind.unsupported
}
return OSErrorKind.unknown
}
#target: "arm64-darwin"
const darwin_sys_read: usize = 0x02000003
#target: "arm64-darwin"
const darwin_sys_write: usize = 0x02000004
#target: "arm64-darwin"
const darwin_sys_open: usize = 0x02000005
#target: "arm64-darwin"
const darwin_sys_close: usize = 0x02000006
#target: "arm64-darwin"
const darwin_open_read_only: usize = 0
#target: "arm64-darwin"
// O_WRONLY | O_CREAT | O_TRUNC
const darwin_open_create_truncate: usize = 0x0601
#target: "arm64-darwin"
// O_WRONLY | O_CREAT | O_APPEND
const darwin_open_create_append: usize = 0x0209
#target: "arm64-darwin"
// 0666, filtered by the process umask.
const darwin_create_mode: usize = 438
#target: "arm64-darwin"
const darwin_errno_interrupted: i32 = 4
#target: "arm64-darwin"
const darwin_sys_fcntl: usize = 0x0200005c
#target: "arm64-darwin"
const darwin_f_getpath: usize = 50
#target: "arm64-darwin"
const darwin_max_path_len: usize = 1024