FreeRDP
Loading...
Searching...
No Matches
nonehandle.c
1
21#include <winpr/config.h>
22
23#include "nonehandle.h"
24
25#ifndef _WIN32
26
27#include <pthread.h>
28
29static BOOL NoneHandleCloseHandle(WINPR_ATTR_UNUSED HANDLE handle)
30{
31 return TRUE;
32}
33
34static BOOL NoneHandleIsHandle(HANDLE handle)
35{
36 return WINPR_HANDLE_IS_HANDLED(handle, HANDLE_TYPE_NONE, FALSE);
37}
38
39static int NoneHandleGetFd(HANDLE handle)
40{
41 if (!NoneHandleIsHandle(handle))
42 return -1;
43
44 return -1;
45}
46
47static HANDLE_OPS ops = { NoneHandleIsHandle,
48 NoneHandleCloseHandle,
49 NoneHandleGetFd,
50 nullptr, /* CleanupHandle */
51 nullptr,
52 nullptr,
53 nullptr,
54 nullptr,
55 nullptr,
56 nullptr,
57 nullptr,
58 nullptr,
59 nullptr,
60 nullptr,
61 nullptr,
62 nullptr,
63 nullptr,
64 nullptr,
65 nullptr,
66 nullptr,
67 nullptr };
68
69HANDLE CreateNoneHandle(void)
70{
71 WINPR_NONE_HANDLE* none = (WINPR_NONE_HANDLE*)calloc(1, sizeof(WINPR_NONE_HANDLE));
72
73 if (!none)
74 return nullptr;
75
76 none->common.ops = &ops;
77 none->common.refCount = 1;
78 return (HANDLE)none;
79}
80
81void winpr_Handle_ConvertToNone(HANDLE handle)
82{
83 WINPR_HANDLE* hdl = (WINPR_HANDLE*)handle;
84
85 if (!hdl)
86 return;
87
88 hdl->Type = HANDLE_TYPE_NONE;
89 hdl->Mode = 0;
90 hdl->ops = &ops;
91}
92
93#endif