22#define APR_INHERIT (1 << 24)
24#if APR_HAS_UNICODE_FS && APR_HAS_ANSI_FS
27#define APR_IMPLEMENT_INHERIT_SET(name, flag, pool, cleanup) \
28APR_DECLARE(apr_status_t) apr_##name##_inherit_set(apr_##name##_t *the##name) \
30 IF_WIN_OS_IS_UNICODE \
39 HANDLE temp, hproc = GetCurrentProcess(); \
40 if (!DuplicateHandle(hproc, the##name->filehand, \
41 hproc, &temp, 0, TRUE, \
42 DUPLICATE_SAME_ACCESS)) \
43 return apr_get_os_error(); \
44 CloseHandle(the##name->filehand); \
45 the##name->filehand = temp; \
50#define APR_IMPLEMENT_INHERIT_UNSET(name, flag, pool, cleanup) \
51APR_DECLARE(apr_status_t) apr_##name##_inherit_unset(apr_##name##_t *the##name)\
53 IF_WIN_OS_IS_UNICODE \
61 HANDLE temp, hproc = GetCurrentProcess(); \
62 if (!DuplicateHandle(hproc, the##name->filehand, \
63 hproc, &temp, 0, FALSE, \
64 DUPLICATE_SAME_ACCESS)) \
65 return apr_get_os_error(); \
66 CloseHandle(the##name->filehand); \
67 the##name->filehand = temp; \
72#elif APR_HAS_ANSI_FS || defined(_WIN32_WCE)
74#define APR_IMPLEMENT_INHERIT_SET(name, flag, pool, cleanup) \
75APR_DECLARE(apr_status_t) apr_##name##_inherit_set(apr_##name##_t *the##name) \
77 HANDLE temp, hproc = GetCurrentProcess(); \
78 if (!DuplicateHandle(hproc, the##name->filehand, \
79 hproc, &temp, 0, TRUE, \
80 DUPLICATE_SAME_ACCESS)) \
81 return apr_get_os_error(); \
82 CloseHandle(the##name->filehand); \
83 the##name->filehand = temp; \
87#define APR_IMPLEMENT_INHERIT_UNSET(name, flag, pool, cleanup) \
88APR_DECLARE(apr_status_t) apr_##name##_inherit_unset(apr_##name##_t *the##name)\
90 HANDLE temp, hproc = GetCurrentProcess(); \
91 if (!DuplicateHandle(hproc, the##name->filehand, \
92 hproc, &temp, 0, FALSE, \
93 DUPLICATE_SAME_ACCESS)) \
94 return apr_get_os_error(); \
95 CloseHandle(the##name->filehand); \
96 the##name->filehand = temp; \
102#define APR_IMPLEMENT_INHERIT_SET(name, flag, pool, cleanup) \
103APR_DECLARE(apr_status_t) apr_##name##_inherit_set(apr_##name##_t *the##name) \
109 return APR_SUCCESS; \
112#define APR_IMPLEMENT_INHERIT_UNSET(name, flag, pool, cleanup) \
113APR_DECLARE(apr_status_t) apr_##name##_inherit_unset(apr_##name##_t *the##name)\
118 return APR_SUCCESS; \
APR File Handle Inheritance Helpers.