17#include "apr_arch_file_io.h"
27#if APR_HAVE_SYS_TYPES_H
36#include "apr_arch_misc.h"
92 static unsigned long id = 0;
96 sa.nLength =
sizeof(
sa);
106 sa.lpSecurityDescriptor =
NULL;
113 (*in)->ungetchar = -1;
118 (*in)->direction = 0;
119 (*in)->pOverlapped =
NULL;
120#if APR_FILES_AS_SOCKETS
127 (*out)->timeout = -1;
128 (*out)->ungetchar = -1;
132 (*out)->dataRead = 0;
133 (*out)->direction = 0;
134 (*out)->pOverlapped =
NULL;
135#if APR_FILES_AS_SOCKETS
141#define FMT_PIPE_NAME "\\\\.\\pipe\\apr-pipe-%x.%lx."
156#ifdef FILE_FLAG_FIRST_PIPE_INSTANCE
192 (*out)->pOverlapped =
214 if (!
CreatePipe(&(*in)->filehand, &(*out)->filehand, &
sa, 65536)) {
252 (*file)->pool =
pool;
254 (*file)->timeout = -1;
255 (*file)->ungetchar = -1;
257#if APR_FILES_AS_SOCKETS
289 unsigned long bm = 1;
439 (*in)->ungetchar = -1;
444 (*in)->direction = 0;
450 (*out)->fname =
NULL;
452 (*out)->timeout = -1;
453 (*out)->ungetchar = -1;
457 (*out)->dataRead = 0;
458 (*out)->direction = 0;
#define CreatePipe(ph1, ph2, sd, d)
APR Miscellaneous library routines.
apr_fileperms_t apr_uid_t uid
#define APR_STATUS_IS_EAGAIN(s)
const void apr_status_t(*) apr_status_t(* APR_DECLARE)(void) apr_pool_pre_cleanup_register(apr_pool_t *p
const char int apr_pool_t * pool
#define apr_get_netos_error()
#define apr_get_os_error()
apr_int32_t apr_fileperms_t
apr_file_t apr_int32_t apr_pool_t apr_pool_t * pool_out
const char apr_file_t * file
void const char apr_status_t(* cleanup)(void *))
apr_file_t apr_int32_t blocking
const char apr_int32_t apr_fileperms_t perm
apr_file_t apr_int32_t apr_pool_t * pool_in
#define apr_pcalloc(p, size)
apr_os_file_t int register_cleanup
apr_size_t const char * filename
#define APR_FULL_NONBLOCK
apr_int64_t apr_interval_time_t
apr_thread_mutex_t * mutex
static apr_status_t file_cleanup(apr_file_t *file, int is_child)
#define ELSE_WIN_OS_IS_ANSI
typedef HANDLE(WINAPI *apr_winapi_fpt_CreateToolhelp32Snapshot)(DWORD dwFlags
APR_DECLARE_DATA apr_oslevel_e apr_os_level
#define IF_WIN_OS_IS_UNICODE
typedef DWORD(WINAPI *apr_winapi_fpt_GetCompressedFileSizeA)(IN LPCSTR lpFileName
apr_status_t apr_file_socket_pipe_close(apr_file_t *file)
static apr_status_t create_socket_pipe(SOCKET *rd, SOCKET *wr)
apr_status_t apr_file_socket_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *p)
static apr_status_t socket_pipe_cleanup(void *thefile)