|
@@ -21,6 +21,9 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte,
|
|
case .Flush:
|
|
case .Flush:
|
|
os_err = flush(fd)
|
|
os_err = flush(fd)
|
|
case .Read:
|
|
case .Read:
|
|
|
|
+ if len(p) == 0 {
|
|
|
|
+ return 0, nil
|
|
|
|
+ }
|
|
n_int, os_err = read(fd, p)
|
|
n_int, os_err = read(fd, p)
|
|
n = i64(n_int)
|
|
n = i64(n_int)
|
|
if n == 0 && os_err == nil {
|
|
if n == 0 && os_err == nil {
|
|
@@ -28,18 +31,27 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte,
|
|
}
|
|
}
|
|
|
|
|
|
case .Read_At:
|
|
case .Read_At:
|
|
|
|
+ if len(p) == 0 {
|
|
|
|
+ return 0, nil
|
|
|
|
+ }
|
|
n_int, os_err = read_at(fd, p, offset)
|
|
n_int, os_err = read_at(fd, p, offset)
|
|
n = i64(n_int)
|
|
n = i64(n_int)
|
|
if n == 0 && os_err == nil {
|
|
if n == 0 && os_err == nil {
|
|
err = .EOF
|
|
err = .EOF
|
|
}
|
|
}
|
|
case .Write:
|
|
case .Write:
|
|
|
|
+ if len(p) == 0 {
|
|
|
|
+ return 0, nil
|
|
|
|
+ }
|
|
n_int, os_err = write(fd, p)
|
|
n_int, os_err = write(fd, p)
|
|
n = i64(n_int)
|
|
n = i64(n_int)
|
|
if n == 0 && os_err == nil {
|
|
if n == 0 && os_err == nil {
|
|
err = .EOF
|
|
err = .EOF
|
|
}
|
|
}
|
|
case .Write_At:
|
|
case .Write_At:
|
|
|
|
+ if len(p) == 0 {
|
|
|
|
+ return 0, nil
|
|
|
|
+ }
|
|
n_int, os_err = write_at(fd, p, offset)
|
|
n_int, os_err = write_at(fd, p, offset)
|
|
n = i64(n_int)
|
|
n = i64(n_int)
|
|
if n == 0 && os_err == nil {
|
|
if n == 0 && os_err == nil {
|