aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorviri <hi@viri.moe>2021-06-12 18:36:22 -0600
committerVeikka Tuominen <git@vexu.eu>2021-06-13 10:26:02 +0300
commitb2879825d7e59fc40f3defe272039d723b692f43 (patch)
treed1e3442602e74cdcfdf17233a5748282e8e5daec /lib
parenta6d72fea06364da26b4efacb188303c5bddf5da3 (diff)
downloadzig-b2879825d7e59fc40f3defe272039d723b692f43.tar.gz
zig-b2879825d7e59fc40f3defe272039d723b692f43.zip
std.windows: fix `OVERLAPPED`, add `OVERLAPPED_ENTRY`
Diffstat (limited to 'lib')
-rw-r--r--lib/std/event/loop.zig8
-rw-r--r--lib/std/fs/watch.zig8
-rw-r--r--lib/std/os/windows.zig32
-rw-r--r--lib/std/os/windows/bits.zig17
4 files changed, 51 insertions, 14 deletions
diff --git a/lib/std/event/loop.zig b/lib/std/event/loop.zig
index 393d5688a5..ca55a366f8 100644
--- a/lib/std/event/loop.zig
+++ b/lib/std/event/loop.zig
@@ -54,8 +54,12 @@ pub const Loop = struct {
.windows => windows.OVERLAPPED{
.Internal = 0,
.InternalHigh = 0,
- .Offset = 0,
- .OffsetHigh = 0,
+ .DUMMYUNIONNAME = .{
+ .DUMMYSTRUCTNAME = .{
+ .Offset = 0,
+ .OffsetHigh = 0,
+ },
+ },
.hEvent = null,
},
else => {},
diff --git a/lib/std/fs/watch.zig b/lib/std/fs/watch.zig
index a9fd55da0c..40867bb3b5 100644
--- a/lib/std/fs/watch.zig
+++ b/lib/std/fs/watch.zig
@@ -437,8 +437,12 @@ pub fn Watch(comptime V: type) type {
.overlapped = windows.OVERLAPPED{
.Internal = 0,
.InternalHigh = 0,
- .Offset = 0,
- .OffsetHigh = 0,
+ .DUMMYUNIONNAME = .{
+ .DUMMYSTRUCTNAME = .{
+ .Offset = 0,
+ .OffsetHigh = 0,
+ },
+ },
.hEvent = null,
},
},
diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig
index 6cbc7d539c..23252011c2 100644
--- a/lib/std/os/windows.zig
+++ b/lib/std/os/windows.zig
@@ -455,8 +455,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
.overlapped = OVERLAPPED{
.Internal = 0,
.InternalHigh = 0,
- .Offset = @truncate(u32, off),
- .OffsetHigh = @truncate(u32, off >> 32),
+ .DUMMYUNIONNAME = .{
+ .DUMMYSTRUCTNAME = .{
+ .Offset = @truncate(u32, off),
+ .OffsetHigh = @truncate(u32, off >> 32),
+ },
+ },
.hEvent = null,
},
},
@@ -491,8 +495,12 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
overlapped_data = .{
.Internal = 0,
.InternalHigh = 0,
- .Offset = @truncate(u32, off),
- .OffsetHigh = @truncate(u32, off >> 32),
+ .DUMMYUNIONNAME = .{
+ .DUMMYSTRUCTNAME = .{
+ .Offset = @truncate(u32, off),
+ .OffsetHigh = @truncate(u32, off >> 32),
+ },
+ },
.hEvent = null,
};
break :blk &overlapped_data;
@@ -535,8 +543,12 @@ pub fn WriteFile(
.overlapped = OVERLAPPED{
.Internal = 0,
.InternalHigh = 0,
- .Offset = @truncate(u32, off),
- .OffsetHigh = @truncate(u32, off >> 32),
+ .DUMMYUNIONNAME = .{
+ .DUMMYSTRUCTNAME = .{
+ .Offset = @truncate(u32, off),
+ .OffsetHigh = @truncate(u32, off >> 32),
+ },
+ },
.hEvent = null,
},
},
@@ -571,8 +583,12 @@ pub fn WriteFile(
overlapped_data = .{
.Internal = 0,
.InternalHigh = 0,
- .Offset = @truncate(u32, off),
- .OffsetHigh = @truncate(u32, off >> 32),
+ .DUMMYUNIONNAME = .{
+ .DUMMYSTRUCTNAME = .{
+ .Offset = @truncate(u32, off),
+ .OffsetHigh = @truncate(u32, off >> 32),
+ },
+ },
.hEvent = null,
};
break :blk &overlapped_data;
diff --git a/lib/std/os/windows/bits.zig b/lib/std/os/windows/bits.zig
index f4819544f5..977c63cc5b 100644
--- a/lib/std/os/windows/bits.zig
+++ b/lib/std/os/windows/bits.zig
@@ -359,12 +359,25 @@ pub const FILE_INFORMATION_CLASS = enum(c_int) {
pub const OVERLAPPED = extern struct {
Internal: ULONG_PTR,
InternalHigh: ULONG_PTR,
- Offset: DWORD,
- OffsetHigh: DWORD,
+ DUMMYUNIONNAME: extern union {
+ DUMMYSTRUCTNAME: extern struct {
+ Offset: DWORD,
+ OffsetHigh: DWORD,
+ },
+ Pointer: ?PVOID,
+ },
hEvent: ?HANDLE,
};
pub const LPOVERLAPPED = *OVERLAPPED;
+pub const OVERLAPPED_ENTRY = extern struct {
+ lpCompletionKey: ULONG_PTR,
+ lpOverlapped: LPOVERLAPPED,
+ Internal: ULONG_PTR,
+ dwNumberOfBytesTransferred: DWORD,
+};
+pub const LPOVERLAPPED_ENTRY = *OVERLAPPED_ENTRY;
+
pub const MAX_PATH = 260;
// TODO issue #305