diff options
| author | Daniel Gavin <danielgavin5@hotmail.com> | 2022-05-15 22:40:14 +0200 |
|---|---|---|
| committer | Daniel Gavin <danielgavin5@hotmail.com> | 2022-05-15 22:40:14 +0200 |
| commit | c141c6a999915871ccff2e78eebf7847b24b0e5d (patch) | |
| tree | 72c816afff56514915a723f7e8ffe32d787a543e | |
| parent | 008c89c7ddfe9bd8696236932ecdeae3be41e6fc (diff) | |
Fix odin changes
| -rw-r--r-- | build.bat | 10 | ||||
| -rw-r--r-- | src/common/util_windows.odin | 54 | ||||
| -rw-r--r-- | src/server/requests.odin | 2 |
3 files changed, 29 insertions, 37 deletions
@@ -2,15 +2,15 @@ if "%1" == "CI" (
- "Odin/odin.exe" test tests -collection:shared=src -debug -opt:0
+ "Odin/odin.exe" test tests -collection:shared=src -debug
if %errorlevel% neq 0 exit 1
- "Odin/odin.exe" build src\ -show-timings -collection:shared=src -out:ols -opt:2 -thread-count:1
+ "Odin/odin.exe" build src\ -show-timings -collection:shared=src -out:ols.exe -o:speed -thread-count:1
) else if "%1" == "test" (
- odin test tests -collection:shared=src -opt:0
+ odin test tests -collection:shared=src -debug
) else if "%1" == "single_test" (
odin test tests -collection:shared=src -test-name:%2
) else if "%1" == "debug" (
- odin build src\ -show-timings -microarch:native -collection:shared=src -out:ols -opt:0 -debug
+ odin build src\ -show-timings -collection:shared=src -out:ols.exe -o:speed -no-bounds-check -debug
) else (
- odin build src\ -show-timings -microarch:native -collection:shared=src -out:ols -opt:2 -no-bounds-check
+ odin build src\ -show-timings -microarch:native -collection:shared=src -out:ols.exe -o:speed -no-bounds-check
)
\ No newline at end of file diff --git a/src/common/util_windows.odin b/src/common/util_windows.odin index bf89c47..db2a9fc 100644 --- a/src/common/util_windows.odin +++ b/src/common/util_windows.odin @@ -5,60 +5,52 @@ import "core:mem" import "core:fmt" import "core:log" -import "core:sys/win32" +import win32 "core:sys/windows" foreign import kernel32 "system:kernel32.lib" -@(default_calling_convention = "std") -foreign kernel32 { - @(link_name = "CreatePipe")create_pipe :: proc (hReadPipe, hWritePipe: ^win32.Handle, lpPipeAttributes: ^win32.Security_Attributes, nSize: i32) -> i32 --- -} run_executable :: proc(command: string, stdout: ^[]byte) -> (u32, bool, []byte) { + stdout_read: win32.HANDLE + stdout_write: win32.HANDLE - stdout_read: win32.Handle - stdout_write: win32.Handle + attributes: win32.SECURITY_ATTRIBUTES + attributes.nLength = size_of(win32.SECURITY_ATTRIBUTES) + attributes.bInheritHandle = true + attributes.lpSecurityDescriptor = nil - command := strings.clone_to_cstring(command, context.temp_allocator) - - attributes: win32.Security_Attributes - attributes.length = size_of(win32.Security_Attributes) - attributes.inherit_handle = true - attributes.security_descriptor = nil - - if create_pipe(&stdout_read, &stdout_write, &attributes, 0) == 0 { + if win32.CreatePipe(&stdout_read, &stdout_write, &attributes, 0) == false { return 0, false, stdout[0:] } - if !win32.set_handle_information(stdout_read, win32.HANDLE_FLAG_INHERIT, 0) { + if !win32.SetHandleInformation(stdout_read, win32.HANDLE_FLAG_INHERIT, 0) { return 0, false, stdout[0:] } - startup_info: win32.Startup_Info - process_info: win32.Process_Information + startup_info: win32.STARTUPINFO + process_info: win32.PROCESS_INFORMATION - startup_info.cb = size_of(win32.Startup_Info) + startup_info.cb = size_of(win32.STARTUPINFO) - startup_info.stderr = stdout_write - startup_info.stdout = stdout_write - startup_info.flags |= win32.STARTF_USESTDHANDLES + startup_info.hStdError = stdout_write + startup_info.hStdOutput = stdout_write + startup_info.dwFlags |= win32.STARTF_USESTDHANDLES - if !win32.create_process_a(nil, command, nil, nil, true, 0, nil, nil, &startup_info, &process_info) { + if !win32.CreateProcessW(nil, &win32.utf8_to_utf16(command)[0], nil, nil, true, 0, nil, nil, &startup_info, &process_info) { return 0, false, stdout[0:] } - win32.close_handle(stdout_write) + win32.CloseHandle(stdout_write) index: int - read: i32 + read: u32 read_buffer: [50]byte - success: win32.Bool = true + success: win32.BOOL = true for success { - - success = win32.read_file(stdout_read, &read_buffer[0], len(read_buffer), &read, nil) + success = win32.ReadFile(stdout_read, &read_buffer[0], len(read_buffer), &read, nil) if read > 0 && index + cast(int)read <= len(stdout) { mem.copy(&stdout[index], &read_buffer[0], cast(int)read) @@ -71,11 +63,11 @@ run_executable :: proc(command: string, stdout: ^[]byte) -> (u32, bool, []byte) exit_code: u32 - win32.wait_for_single_object(process_info.process, win32.INFINITE) + win32.WaitForSingleObject(process_info.hProcess, win32.INFINITE) - win32.get_exit_code_process(process_info.process, &exit_code) + win32.GetExitCodeProcess(process_info.hProcess, &exit_code) - win32.close_handle(stdout_read) + win32.CloseHandle(stdout_read) return exit_code, true, stdout[0:index] }
\ No newline at end of file diff --git a/src/server/requests.odin b/src/server/requests.odin index aa73936..f5b0e0d 100644 --- a/src/server/requests.odin +++ b/src/server/requests.odin @@ -442,7 +442,7 @@ request_initialize :: proc (params: json.Value, id: RequestId, config: ^common.C when ODIN_OS == .Windows { odin_core_env := os.get_env("ODIN_ROOT", context.temp_allocator) } else { - odin_core_env, _ := os.getenv("ODIN_ROOT") + odin_core_env, _ := os.get_env("ODIN_ROOT") } if "core" not_in config.collections && odin_core_env != "" { |