Add read_at/write_at to missing platforms

This commit is contained in:
gingerBill
2024-08-04 13:16:37 +01:00
parent c32f345c68
commit 7663a2036a
6 changed files with 99 additions and 19 deletions
+20
View File
@@ -456,6 +456,26 @@ write :: proc(fd: Handle, data: []byte) -> (int, Error) {
return int(bytes_written), nil
}
read_at :: proc(fd: Handle, data: []byte, offset: i64) -> (n: int, err: Error) {
curr := seek(fd, offset, SEEK_CUR) or_return
n, err = read(fd, data)
_, err1 := seek(fd, curr, SEEK_SET)
if err1 != nil && err == nil {
err = err1
}
return
}
write_at :: proc(fd: Handle, data: []byte, offset: i64) -> (n: int, err: Error) {
curr := seek(fd, offset, SEEK_CUR) or_return
n, err = write(fd, data)
_, err1 := seek(fd, curr, SEEK_SET)
if err1 != nil && err == nil {
err = err1
}
return
}
seek :: proc(fd: Handle, offset: i64, whence: int) -> (i64, Error) {
res := _unix_seek(fd, offset, c.int(whence))
if res == -1 {