mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 23:28:48 +00:00
Implement init_long_path_support
This commit is contained in:
@@ -17,10 +17,7 @@ _error_string :: proc(errno: i32) -> string {
|
|||||||
if idx, ok := slice.binary_search(ti.values, err); ok {
|
if idx, ok := slice.binary_search(ti.values, err); ok {
|
||||||
return ti.names[idx]
|
return ti.names[idx]
|
||||||
}
|
}
|
||||||
|
return "<unknown platform error>"
|
||||||
// TODO(bill): _error_string for windows
|
|
||||||
// FormatMessageW
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_get_platform_error :: proc() -> Error {
|
_get_platform_error :: proc() -> Error {
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ _read :: proc(f: ^File_Impl, p: []byte) -> (n: i64, err: Error) {
|
|||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(bill): should this be moved to `_File` instead?
|
// TODO(bill): should this be moved to `File_Impl` instead?
|
||||||
BUF_SIZE :: 386
|
BUF_SIZE :: 386
|
||||||
buf16: [BUF_SIZE]u16
|
buf16: [BUF_SIZE]u16
|
||||||
buf8: [4*BUF_SIZE]u8
|
buf8: [4*BUF_SIZE]u8
|
||||||
|
|||||||
@@ -139,10 +139,33 @@ can_use_long_paths: bool
|
|||||||
|
|
||||||
@(init)
|
@(init)
|
||||||
init_long_path_support :: proc() {
|
init_long_path_support :: proc() {
|
||||||
// TODO(bill): init_long_path_support
|
|
||||||
// ADD THIS SHIT
|
|
||||||
// registry_path := win32.L(`Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled`)
|
|
||||||
can_use_long_paths = false
|
can_use_long_paths = false
|
||||||
|
|
||||||
|
key: win32.HKEY
|
||||||
|
res := win32.RegOpenKeyExW(win32.HKEY_LOCAL_MACHINE, win32.L(`SYSTEM\CurrentControlSet\Control\FileSystem`), 0, win32.KEY_READ, &key)
|
||||||
|
defer win32.RegCloseKey(key)
|
||||||
|
if res != 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
value: u32
|
||||||
|
size := u32(size_of(value))
|
||||||
|
res = win32.RegGetValueW(
|
||||||
|
key,
|
||||||
|
nil,
|
||||||
|
win32.L("LongPathsEnabled"),
|
||||||
|
win32.RRF_RT_ANY,
|
||||||
|
nil,
|
||||||
|
&value,
|
||||||
|
&size,
|
||||||
|
)
|
||||||
|
if res != 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if value == 1 {
|
||||||
|
can_use_long_paths = true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@(require_results)
|
@(require_results)
|
||||||
|
|||||||
Reference in New Issue
Block a user