Browse Source

Use `i64` instead of `int` for internal procedures

gingerBill 2 years ago
parent
commit
a78d6fe0b3
4 changed files with 68 additions and 48 deletions
  1. 6 2
      core/os/os2/errors_windows.odin
  2. 32 8
      core/os/os2/file.odin
  3. 14 18
      core/os/os2/file_linux.odin
  4. 16 20
      core/os/os2/file_windows.odin

+ 6 - 2
core/os/os2/errors_windows.odin

@@ -37,14 +37,18 @@ _get_platform_error :: proc() -> Error {
 	case win32.ERROR_NOT_SUPPORTED:
 	case win32.ERROR_NOT_SUPPORTED:
 		return .Unsupported
 		return .Unsupported
 
 
+	case win32.ERROR_HANDLE_EOF:
+		return .EOF
+
+	case win32.ERROR_INVALID_HANDLE:
+		return .Invalid_File
+
 	case
 	case
 		win32.ERROR_BAD_ARGUMENTS,
 		win32.ERROR_BAD_ARGUMENTS,
 		win32.ERROR_INVALID_PARAMETER,
 		win32.ERROR_INVALID_PARAMETER,
 		win32.ERROR_NOT_ENOUGH_MEMORY,
 		win32.ERROR_NOT_ENOUGH_MEMORY,
-		win32.ERROR_INVALID_HANDLE,
 		win32.ERROR_NO_MORE_FILES,
 		win32.ERROR_NO_MORE_FILES,
 		win32.ERROR_LOCK_VIOLATION,
 		win32.ERROR_LOCK_VIOLATION,
-		win32.ERROR_HANDLE_EOF,
 		win32.ERROR_BROKEN_PIPE,
 		win32.ERROR_BROKEN_PIPE,
 		win32.ERROR_CALL_NOT_IMPLEMENTED,
 		win32.ERROR_CALL_NOT_IMPLEMENTED,
 		win32.ERROR_INSUFFICIENT_BUFFER,
 		win32.ERROR_INSUFFICIENT_BUFFER,

+ 32 - 8
core/os/os2/file.odin

@@ -71,35 +71,59 @@ name :: proc(f: ^File) -> string {
 }
 }
 
 
 close :: proc(f: ^File) -> Error {
 close :: proc(f: ^File) -> Error {
-	return io.close(f.impl.stream)
+	if f != nil {
+		return io.close(f.impl.stream)
+	}
+	return nil
 }
 }
 
 
 seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Error) {
 seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Error) {
-	return io.seek(f.impl.stream, offset, whence)
+	if f != nil {
+		return io.seek(f.impl.stream, offset, whence)
+	}
+	return 0, .Invalid_File
 }
 }
 
 
 read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
 read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
-	return io.read(f.impl.stream, p)
+	if f != nil {
+		return io.read(f.impl.stream, p)
+	}
+	return 0, .Invalid_File
 }
 }
 
 
 read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
 read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
-	return io.read_at(f.impl.stream, p, offset)
+	if f != nil {
+		return io.read_at(f.impl.stream, p, offset)
+	}
+	return 0, .Invalid_File
 }
 }
 
 
 write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
 write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
-	return io.write(f.impl.stream, p)
+	if f != nil {
+		return io.write(f.impl.stream, p)
+	}
+	return 0, .Invalid_File
 }
 }
 
 
 write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
 write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
-	return io.write_at(f.impl.stream, p, offset)
+	if f != nil {
+		return io.write_at(f.impl.stream, p, offset)
+	}
+	return 0, .Invalid_File
 }
 }
 
 
 file_size :: proc(f: ^File) -> (n: i64, err: Error) {
 file_size :: proc(f: ^File) -> (n: i64, err: Error) {
-	return io.size(f.impl.stream)
+	if f != nil {
+		return io.size(f.impl.stream)
+	}
+	return 0, .Invalid_File
 }
 }
 
 
 flush :: proc(f: ^File) -> Error {
 flush :: proc(f: ^File) -> Error {
-	return io.flush(f.impl.stream)
+	if f != nil {
+		return io.flush(f.impl.stream)
+	}
+	return nil
 }
 }
 
 
 sync :: proc(f: ^File) -> Error {
 sync :: proc(f: ^File) -> Error {

+ 14 - 18
core/os/os2/file_linux.odin

@@ -116,18 +116,18 @@ _seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Er
 	return res, nil
 	return res, nil
 }
 }
 
 
-_read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
+_read :: proc(f: ^File, p: []byte) -> (i64, Error) {
 	if len(p) == 0 {
 	if len(p) == 0 {
 		return 0, nil
 		return 0, nil
 	}
 	}
-	n = unix.sys_read(f.impl.fd, &p[0], len(p))
+	n := unix.sys_read(f.impl.fd, &p[0], len(p))
 	if n < 0 {
 	if n < 0 {
 		return -1, _get_platform_error(n)
 		return -1, _get_platform_error(n)
 	}
 	}
-	return n, nil
+	return i64(n), nil
 }
 }
 
 
-_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
+_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
 	if offset < 0 {
 	if offset < 0 {
 		return 0, .Invalid_Offset
 		return 0, .Invalid_Offset
 	}
 	}
@@ -138,25 +138,25 @@ _read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
 		if m < 0 {
 		if m < 0 {
 			return -1, _get_platform_error(m)
 			return -1, _get_platform_error(m)
 		}
 		}
-		n += m
+		n += i64(m)
 		b = b[m:]
 		b = b[m:]
 		offset += i64(m)
 		offset += i64(m)
 	}
 	}
 	return
 	return
 }
 }
 
 
-_write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
+_write :: proc(f: ^File, p: []byte) -> (i64, Error) {
 	if len(p) == 0 {
 	if len(p) == 0 {
 		return 0, nil
 		return 0, nil
 	}
 	}
-	n = unix.sys_write(f.impl.fd, &p[0], uint(len(p)))
+	n := unix.sys_write(f.impl.fd, &p[0], uint(len(p)))
 	if n < 0 {
 	if n < 0 {
 		return -1, _get_platform_error(n)
 		return -1, _get_platform_error(n)
 	}
 	}
-	return int(n), nil
+	return i64(n), nil
 }
 }
 
 
-_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
+_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
 	if offset < 0 {
 	if offset < 0 {
 		return 0, .Invalid_Offset
 		return 0, .Invalid_Offset
 	}
 	}
@@ -167,7 +167,7 @@ _write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
 		if m < 0 {
 		if m < 0 {
 			return -1, _get_platform_error(m)
 			return -1, _get_platform_error(m)
 		}
 		}
-		n += m
+		n += i64(m)
 		b = b[m:]
 		b = b[m:]
 		offset += i64(m)
 		offset += i64(m)
 	}
 	}
@@ -371,23 +371,19 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte,
 	i: int
 	i: int
 	switch mode {
 	switch mode {
 	case .Read:
 	case .Read:
-		i, ferr = _read(f, p)
-		n = i64(i)
+		n, ferr = _read(f, p)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Read_At:
 	case .Read_At:
-		i, ferr = _read_at(f, p, offset)
-		n = i64(i)
+		n, ferr = _read_at(f, p, offset)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Write:
 	case .Write:
-		i, ferr = _write(f, p)
-		n = i64(i)
+		n, ferr = _write(f, p)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Write_At:
 	case .Write_At:
-		i, ferr = _write_at(f, p, offset)
-		n = i64(i)
+		n, ferr = _write_at(f, p, offset)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Seek:
 	case .Seek:

+ 16 - 20
core/os/os2/file_windows.odin

@@ -215,7 +215,7 @@ _seek :: proc(f: ^File, offset: i64, whence: io.Seek_From) -> (ret: i64, err: Er
 	return i64(hi)<<32 + i64(dw_ptr), nil
 	return i64(hi)<<32 + i64(dw_ptr), nil
 }
 }
 
 
-_read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
+_read :: proc(f: ^File, p: []byte) -> (n: i64, err: Error) {
 	read_console :: proc(handle: win32.HANDLE, b: []byte) -> (n: int, err: Error) {
 	read_console :: proc(handle: win32.HANDLE, b: []byte) -> (n: int, err: Error) {
 		if len(b) == 0 {
 		if len(b) == 0 {
 			return 0, nil
 			return 0, nil
@@ -281,7 +281,7 @@ _read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
 			n, err := read_console(handle, p[total_read:][:to_read])
 			n, err := read_console(handle, p[total_read:][:to_read])
 			total_read += n
 			total_read += n
 			if err != nil {
 			if err != nil {
-				return int(total_read), err
+				return i64(total_read), err
 			}
 			}
 		} else {
 		} else {
 			ok = win32.ReadFile(handle, &p[total_read], to_read, &single_read_length, nil)
 			ok = win32.ReadFile(handle, &p[total_read], to_read, &single_read_length, nil)
@@ -294,11 +294,11 @@ _read :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
 		}
 		}
 	}
 	}
 
 
-	return int(total_read), err
+	return i64(total_read), err
 }
 }
 
 
-_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
-	pread :: proc(f: ^File, data: []byte, offset: i64) -> (n: int, err: Error) {
+_read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
+	pread :: proc(f: ^File, data: []byte, offset: i64) -> (n: i64, err: Error) {
 		buf := data
 		buf := data
 		if len(buf) > MAX_RW {
 		if len(buf) > MAX_RW {
 			buf = buf[:MAX_RW]
 			buf = buf[:MAX_RW]
@@ -320,7 +320,7 @@ _read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
 			err = _get_platform_error()
 			err = _get_platform_error()
 			done = 0
 			done = 0
 		}
 		}
-		n = int(done)
+		n = i64(done)
 		return
 		return
 	}
 	}
 
 
@@ -336,7 +336,7 @@ _read_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
 	return
 	return
 }
 }
 
 
-_write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
+_write :: proc(f: ^File, p: []byte) -> (n: i64, err: Error) {
 	if len(p) == 0 {
 	if len(p) == 0 {
 		return
 		return
 	}
 	}
@@ -354,17 +354,17 @@ _write :: proc(f: ^File, p: []byte) -> (n: int, err: Error) {
 
 
 		e := win32.WriteFile(handle, &p[total_write], to_write, &single_write_length, nil)
 		e := win32.WriteFile(handle, &p[total_write], to_write, &single_write_length, nil)
 		if single_write_length <= 0 || !e {
 		if single_write_length <= 0 || !e {
-			n = int(total_write)
+			n = i64(total_write)
 			err = _get_platform_error()
 			err = _get_platform_error()
 			return
 			return
 		}
 		}
 		total_write += i64(single_write_length)
 		total_write += i64(single_write_length)
 	}
 	}
-	return int(total_write), nil
+	return i64(total_write), nil
 }
 }
 
 
-_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
-	pwrite :: proc(f: ^File, data: []byte, offset: i64) -> (n: int, err: Error) {
+_write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: i64, err: Error) {
+	pwrite :: proc(f: ^File, data: []byte, offset: i64) -> (n: i64, err: Error) {
 		buf := data
 		buf := data
 		if len(buf) > MAX_RW {
 		if len(buf) > MAX_RW {
 			buf = buf[:MAX_RW]
 			buf = buf[:MAX_RW]
@@ -384,7 +384,7 @@ _write_at :: proc(f: ^File, p: []byte, offset: i64) -> (n: int, err: Error) {
 			err = _get_platform_error()
 			err = _get_platform_error()
 			done = 0
 			done = 0
 		}
 		}
-		n = int(done)
+		n = i64(done)
 		return
 		return
 	}
 	}
 
 
@@ -733,23 +733,19 @@ _file_stream_proc :: proc(stream_data: rawptr, mode: io.Stream_Mode, p: []byte,
 	i: int
 	i: int
 	switch mode {
 	switch mode {
 	case .Read:
 	case .Read:
-		i, ferr = _read(f, p)
-		n = i64(i)
+		n, ferr = _read(f, p)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Read_At:
 	case .Read_At:
-		i, ferr = _read_at(f, p, offset)
-		n = i64(i)
+		n, ferr = _read_at(f, p, offset)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Write:
 	case .Write:
-		i, ferr = _write(f, p)
-		n = i64(i)
+		n, ferr = _write(f, p)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Write_At:
 	case .Write_At:
-		i, ferr = _write_at(f, p, offset)
-		n = i64(i)
+		n, ferr = _write_at(f, p, offset)
 		err = error_to_io_error(ferr)
 		err = error_to_io_error(ferr)
 		return
 		return
 	case .Seek:
 	case .Seek: