Skip to content

Commit 464ce8a

Browse files
authored
Merge pull request #18091 from squeek502/no-shell32-no-ole32
Remove Zig's internal depedency on `shell32.dll` and `ole32.dll`
2 parents 6f8c597 + 0bc4ee1 commit 464ce8a

File tree

5 files changed

+158
-316
lines changed

5 files changed

+158
-316
lines changed

lib/std/fs/get_app_data_dir.zig

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,12 @@ pub const GetAppDataDirError = error{
1515
pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDirError![]u8 {
1616
switch (builtin.os.tag) {
1717
.windows => {
18-
var dir_path_ptr: [*:0]u16 = undefined;
19-
switch (os.windows.shell32.SHGetKnownFolderPath(
20-
&os.windows.FOLDERID_LocalAppData,
21-
os.windows.KF_FLAG_CREATE,
22-
null,
23-
&dir_path_ptr,
24-
)) {
25-
os.windows.S_OK => {
26-
defer os.windows.ole32.CoTaskMemFree(dir_path_ptr);
27-
const global_dir = unicode.utf16leToUtf8Alloc(allocator, mem.sliceTo(dir_path_ptr, 0)) catch |err| switch (err) {
28-
error.UnexpectedSecondSurrogateHalf => return error.AppDataDirUnavailable,
29-
error.ExpectedSecondSurrogateHalf => return error.AppDataDirUnavailable,
30-
error.DanglingSurrogateHalf => return error.AppDataDirUnavailable,
31-
error.OutOfMemory => return error.OutOfMemory,
32-
};
33-
defer allocator.free(global_dir);
34-
return fs.path.join(allocator, &[_][]const u8{ global_dir, appname });
35-
},
36-
os.windows.E_OUTOFMEMORY => return error.OutOfMemory,
18+
const local_app_data_dir = std.process.getEnvVarOwned(allocator, "LOCALAPPDATA") catch |err| switch (err) {
19+
error.OutOfMemory => |e| return e,
3720
else => return error.AppDataDirUnavailable,
38-
}
21+
};
22+
defer allocator.free(local_app_data_dir);
23+
return fs.path.join(allocator, &[_][]const u8{ local_app_data_dir, appname });
3924
},
4025
.macos => {
4126
const home_dir = os.getenv("HOME") orelse {

lib/std/os/windows.zig

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ test {
2121
pub const advapi32 = @import("windows/advapi32.zig");
2222
pub const kernel32 = @import("windows/kernel32.zig");
2323
pub const ntdll = @import("windows/ntdll.zig");
24-
pub const ole32 = @import("windows/ole32.zig");
25-
pub const shell32 = @import("windows/shell32.zig");
2624
pub const ws2_32 = @import("windows/ws2_32.zig");
2725
pub const crypt32 = @import("windows/crypt32.zig");
2826
pub const nls = @import("windows/nls.zig");
@@ -3527,7 +3525,8 @@ pub const SEC_LARGE_PAGES = 0x80000000;
35273525

35283526
pub const HKEY = *opaque {};
35293527

3530-
pub const HKEY_LOCAL_MACHINE: HKEY = @as(HKEY, @ptrFromInt(0x80000002));
3528+
pub const HKEY_CLASSES_ROOT: HKEY = @ptrFromInt(0x80000000);
3529+
pub const HKEY_LOCAL_MACHINE: HKEY = @ptrFromInt(0x80000002);
35313530

35323531
/// Combines the STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY,
35333532
/// KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, and KEY_CREATE_LINK access rights.

lib/std/os/windows/ole32.zig

Lines changed: 0 additions & 12 deletions
This file was deleted.

lib/std/os/windows/shell32.zig

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)