mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-04 20:17:48 +00:00
Add POSIX dirent struct for Linux.
This commit is contained in:
@@ -26,6 +26,9 @@ Pid :: distinct i32
|
||||
File_Time :: distinct u64
|
||||
Socket :: distinct int
|
||||
|
||||
ino_t :: u64
|
||||
ino_t32 :: u32
|
||||
|
||||
INVALID_HANDLE :: ~Handle(0)
|
||||
|
||||
_Platform_Error :: linux.Errno
|
||||
|
||||
@@ -202,7 +202,27 @@ when ODIN_OS == .Darwin {
|
||||
|
||||
} else when ODIN_OS == .Linux {
|
||||
|
||||
dirent :: struct {
|
||||
when ODIN_ARCH == .i386 || ODIN_ARCH == .wasm32 || ODIN_ARCH == .arm32 {
|
||||
|
||||
dirent :: struct {
|
||||
d_ino: ino_t32, /* [PSX] file number of entry */
|
||||
d_off: off_t32, /* directory offset of the next entry */
|
||||
d_reclen: c.uint16_t, /* length of this record */
|
||||
d_type: D_Type, /* file type */
|
||||
d_name: [256]c.char `fmt:"s,0"` /* [PSX] entry name */
|
||||
}
|
||||
} else when ODIN_ARCH == .amd64 || ODIN_ARCH == .wasm64p32 || ODIN_ARCH == .arm64 {
|
||||
|
||||
dirent :: struct {
|
||||
d_ino: ino_t, /* [PSX] file number of entry */
|
||||
d_off: off_t, /* directory offset of the next entry */
|
||||
d_reclen: c.uint16_t, /* length of this record */
|
||||
d_type: D_Type, /* file type */
|
||||
d_name: [256]c.char `fmt:"s,0"` /* [PSX] entry name */
|
||||
}
|
||||
}
|
||||
|
||||
dirent64 :: struct {
|
||||
d_ino: ino_t, /* [PSX] file number of entry */
|
||||
d_off: off_t, /* directory offset of the next entry */
|
||||
d_reclen: c.uint16_t, /* length of this record */
|
||||
|
||||
@@ -410,6 +410,9 @@ when ODIN_OS == .Darwin {
|
||||
l_whence: c.short, /* [PSX] flag (Whence) of starting offset */
|
||||
}
|
||||
|
||||
} else when ODIN_OS == .Linux {
|
||||
off_t :: distinct c.uint64_t
|
||||
off_t32 :: distinct c.uint32_t
|
||||
} else {
|
||||
#panic("posix is unimplemented for the current target")
|
||||
}
|
||||
|
||||
@@ -427,6 +427,9 @@ when ODIN_OS == .Darwin {
|
||||
UTIME_NOW :: -2
|
||||
UTIME_OMIT :: -1
|
||||
|
||||
} when ODIN_OS == .Linux {
|
||||
ino_t :: distinct c.unit64_t
|
||||
ino_t32 :: distinct c.unit32_t
|
||||
} else {
|
||||
#panic("posix is unimplemented for the current target")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user