aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2022-05-15 22:40:14 +0200
committerDaniel Gavin <danielgavin5@hotmail.com>2022-05-15 22:40:14 +0200
commitc141c6a999915871ccff2e78eebf7847b24b0e5d (patch)
tree72c816afff56514915a723f7e8ffe32d787a543e /src
parent008c89c7ddfe9bd8696236932ecdeae3be41e6fc (diff)
Fix odin changes
Diffstat (limited to 'src')
-rw-r--r--src/common/util_windows.odin54
-rw-r--r--src/server/requests.odin2
2 files changed, 24 insertions, 32 deletions
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 != "" {