mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Add win32.get_cwd to return the current working directory
This commit is contained in:
@@ -329,6 +329,10 @@ is_space :: proc(r: rune) -> bool {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_null :: proc(r: rune) -> bool {
|
||||||
|
return r == 0x0000;
|
||||||
|
}
|
||||||
|
|
||||||
index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> int {
|
index_proc :: proc(s: string, p: proc(rune) -> bool, truth := true) -> int {
|
||||||
for r, i in s {
|
for r, i in s {
|
||||||
if p(r) == truth {
|
if p(r) == truth {
|
||||||
@@ -476,3 +480,16 @@ trim_right_space :: proc(s: string) -> string {
|
|||||||
trim_space :: proc(s: string) -> string {
|
trim_space :: proc(s: string) -> string {
|
||||||
return trim_right_space(trim_left_space(s));
|
return trim_right_space(trim_left_space(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trim_left_null :: proc(s: string) -> string {
|
||||||
|
return trim_left_proc(s, is_null);
|
||||||
|
}
|
||||||
|
|
||||||
|
trim_right_null :: proc(s: string) -> string {
|
||||||
|
return trim_right_proc(s, is_null);
|
||||||
|
}
|
||||||
|
|
||||||
|
trim_null :: proc(s: string) -> string {
|
||||||
|
return trim_right_null(trim_left_null(s));
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package win32
|
||||||
|
|
||||||
|
import "core:strings";
|
||||||
|
|
||||||
|
foreign {
|
||||||
|
@(link_name="_wgetcwd") _get_cwd_wide :: proc(buffer: Wstring, buf_len: int) -> ^Wstring ---
|
||||||
|
}
|
||||||
|
|
||||||
|
get_cwd :: proc(allocator := context.temp_allocator) -> string {
|
||||||
|
buffer := make([]u16, MAX_PATH_WIDE, allocator);
|
||||||
|
_get_cwd_wide(Wstring(&buffer[0]), MAX_PATH_WIDE);
|
||||||
|
file := ucs2_to_utf8(buffer[:], allocator);
|
||||||
|
return strings.trim_right_null(file);
|
||||||
|
}
|
||||||
@@ -108,6 +108,8 @@ File_Attribute_Data :: struct {
|
|||||||
file_size_low: u32,
|
file_size_low: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE(Jeroen): The widechar version might want at least the 32k MAX_PATH_WIDE
|
||||||
|
// https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-findfirstfilew#parameters
|
||||||
Find_Data_W :: struct{
|
Find_Data_W :: struct{
|
||||||
file_attributes: u32,
|
file_attributes: u32,
|
||||||
creation_time: Filetime,
|
creation_time: Filetime,
|
||||||
@@ -798,6 +800,7 @@ is_key_down :: inline proc(key: Key_Code) -> bool { return get_async_key_state(i
|
|||||||
|
|
||||||
|
|
||||||
MAX_PATH :: 0x00000104;
|
MAX_PATH :: 0x00000104;
|
||||||
|
MAX_PATH_WIDE :: 0x8000;
|
||||||
|
|
||||||
HANDLE_FLAG_INHERIT :: 1;
|
HANDLE_FLAG_INHERIT :: 1;
|
||||||
HANDLE_FLAG_PROTECT_FROM_CLOSE :: 2;
|
HANDLE_FLAG_PROTECT_FROM_CLOSE :: 2;
|
||||||
|
|||||||
Reference in New Issue
Block a user