aboutsummaryrefslogtreecommitdiff
path: root/core/sys
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-06-02 13:02:16 +0100
committergingerBill <bill@gingerbill.org>2022-06-02 13:02:16 +0100
commitfb49841b1d8e84cb721f5f73200d4c8158cbb4fa (patch)
treea89451b5b3195b6e8160a39fc34e3a846cdcded8 /core/sys
parent01ea0d6f1e0b32c248d5ddfc0980a350361f9414 (diff)
Remove `strings` dependency from `core:sys/windows`
Diffstat (limited to 'core/sys')
-rw-r--r--core/sys/windows/comdlg32.odin5
-rw-r--r--core/sys/windows/util.odin17
2 files changed, 19 insertions, 3 deletions
diff --git a/core/sys/windows/comdlg32.odin b/core/sys/windows/comdlg32.odin
index a3709cba7..42a1fd60f 100644
--- a/core/sys/windows/comdlg32.odin
+++ b/core/sys/windows/comdlg32.odin
@@ -2,7 +2,6 @@
package sys_windows
foreign import "system:Comdlg32.lib"
-import "core:strings"
LPOFNHOOKPROC :: #type proc "stdcall" (hdlg: HWND, msg: u32, wparam: WPARAM, lparam: LPARAM) -> UINT_PTR
@@ -49,6 +48,9 @@ SAVE_TITLE :: "Select file to save"
SAVE_FLAGS :: u32(OFN_OVERWRITEPROMPT | OFN_EXPLORER)
SAVE_EXT :: "txt"
+/*
+import "core:strings"
+
Open_Save_Mode :: enum {
Open = 0,
Save = 1,
@@ -121,6 +123,7 @@ select_file_to_save :: proc(title := SAVE_TITLE, dir := ".",
path, ok = _open_file_dialog(title, dir, filters, default_filter, flags, default_ext, Open_Save_Mode.Save, allocator)
return
}
+*/
// TODO: Implement convenience function for select_file_to_open with ALLOW_MULTI_SELECT that takes
// it output of the form "path\u0000\file1u\0000file2" and turns it into []string with the path + file pre-concatenated for you.
diff --git a/core/sys/windows/util.odin b/core/sys/windows/util.odin
index 1c8b9175b..c350032f0 100644
--- a/core/sys/windows/util.odin
+++ b/core/sys/windows/util.odin
@@ -1,7 +1,6 @@
// +build windows
package sys_windows
-import "core:strings"
import "core:runtime"
import "core:intrinsics"
@@ -100,6 +99,20 @@ utf16_to_utf8 :: proc(s: []u16, allocator := context.temp_allocator) -> (res: st
// AdvAPI32, NetAPI32 and UserENV helpers.
allowed_username :: proc(username: string) -> bool {
+ contains_any :: proc(s, chars: string) -> bool {
+ if chars == "" {
+ return false
+ }
+ for c in transmute([]byte)s {
+ for b in transmute([]byte)chars {
+ if c == b {
+ return true
+ }
+ }
+ }
+ return false
+ }
+
/*
User account names are limited to 20 characters and group names are limited to 256 characters.
In addition, account names cannot be terminated by a period and they cannot include commas or any of the following printable characters:
@@ -120,7 +133,7 @@ allowed_username :: proc(username: string) -> bool {
return false
}
}
- if strings.contains_any(username, _DISALLOWED) {
+ if contains_any(username, _DISALLOWED) {
return false
}