mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 22:58:46 +00:00
Add POSIX dirent struct for Linux.
This commit is contained in:
@@ -26,6 +26,9 @@ Pid :: distinct i32
|
|||||||
File_Time :: distinct u64
|
File_Time :: distinct u64
|
||||||
Socket :: distinct int
|
Socket :: distinct int
|
||||||
|
|
||||||
|
ino_t :: u64
|
||||||
|
ino_t32 :: u32
|
||||||
|
|
||||||
INVALID_HANDLE :: ~Handle(0)
|
INVALID_HANDLE :: ~Handle(0)
|
||||||
|
|
||||||
_Platform_Error :: linux.Errno
|
_Platform_Error :: linux.Errno
|
||||||
|
|||||||
@@ -202,7 +202,27 @@ when ODIN_OS == .Darwin {
|
|||||||
|
|
||||||
} else when ODIN_OS == .Linux {
|
} 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_ino: ino_t, /* [PSX] file number of entry */
|
||||||
d_off: off_t, /* directory offset of the next entry */
|
d_off: off_t, /* directory offset of the next entry */
|
||||||
d_reclen: c.uint16_t, /* length of this record */
|
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 */
|
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 {
|
} else {
|
||||||
#panic("posix is unimplemented for the current target")
|
#panic("posix is unimplemented for the current target")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -427,6 +427,9 @@ when ODIN_OS == .Darwin {
|
|||||||
UTIME_NOW :: -2
|
UTIME_NOW :: -2
|
||||||
UTIME_OMIT :: -1
|
UTIME_OMIT :: -1
|
||||||
|
|
||||||
|
} when ODIN_OS == .Linux {
|
||||||
|
ino_t :: distinct c.unit64_t
|
||||||
|
ino_t32 :: distinct c.unit32_t
|
||||||
} else {
|
} else {
|
||||||
#panic("posix is unimplemented for the current target")
|
#panic("posix is unimplemented for the current target")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user