aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.bat10
-rw-r--r--src/common/util_windows.odin54
-rw-r--r--src/server/requests.odin2
3 files changed, 29 insertions, 37 deletions
diff --git a/build.bat b/build.bat
index 4b09447..7267247 100644
--- a/build.bat
+++ b/build.bat
@@ -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 != "" {