1234567891011121314151617181920212223242526272829 |
- #+private
- package os2
- import win32 "core:sys/windows"
- _pipe :: proc() -> (r, w: ^File, err: Error) {
- p: [2]win32.HANDLE
- sa := win32.SECURITY_ATTRIBUTES {
- nLength = size_of(win32.SECURITY_ATTRIBUTES),
- bInheritHandle = true,
- }
- if !win32.CreatePipe(&p[0], &p[1], &sa, 0) {
- return nil, nil, _get_platform_error()
- }
- return new_file(uintptr(p[0]), ""), new_file(uintptr(p[1]), ""), nil
- }
- @(require_results)
- _pipe_has_data :: proc(r: ^File) -> (ok: bool, err: Error) {
- if r == nil || r.impl == nil {
- return false, nil
- }
- handle := win32.HANDLE((^File_Impl)(r.impl).fd)
- bytes_available: u32
- if !win32.PeekNamedPipe(handle, nil, 0, nil, &bytes_available, nil) {
- return false, _get_platform_error()
- }
- return bytes_available > 0, nil
- }
|