Portability Routines

Overview

// typedefs

typedef int apr_os_file_t;
typedef DIR apr_os_dir_t;
typedef int apr_os_sock_t;
typedef struct apr_os_proc_mutex_t apr_os_proc_mutex_t;
typedef pthread_t apr_os_thread_t;
typedef pthread_key_t apr_os_threadkey_t;
typedef pid_t apr_os_proc_t;
typedef struct timeval apr_os_imp_time_t;
typedef struct tm apr_os_exp_time_t;
typedef void* apr_os_dso_handle_t;
typedef void* apr_os_shm_t;
typedef struct apr_os_sock_info_t apr_os_sock_info_t;

// structs

struct apr_os_proc_mutex_t;
struct apr_os_sock_info_t;

// global functions

apr_status_t
apr_os_file_get(
    apr_os_file_t* thefile,
    apr_file_t* file
);

apr_status_t
apr_os_dir_get(
    apr_os_dir_t** thedir,
    apr_dir_t* dir
);

apr_status_t
apr_os_sock_get(
    apr_os_sock_t* thesock,
    apr_socket_t* sock
);

apr_status_t
apr_os_proc_mutex_get(
    apr_os_proc_mutex_t* ospmutex,
    apr_proc_mutex_t* pmutex
);

apr_status_t
apr_os_exp_time_get(
    apr_os_exp_time_t** ostime,
    apr_time_exp_t* aprtime
);

apr_status_t
apr_os_imp_time_get(
    apr_os_imp_time_t** ostime,
    apr_time_t* aprtime
);

apr_status_t
apr_os_shm_get(
    apr_os_shm_t* osshm,
    apr_shm_t* shm
);

apr_status_t
apr_os_file_put(
    apr_file_t** file,
    apr_os_file_t* thefile,
    apr_int32_t flags,
    apr_pool_t* cont
);

apr_status_t
apr_os_pipe_put(
    apr_file_t** file,
    apr_os_file_t* thefile,
    apr_pool_t* cont
);

apr_status_t
apr_os_pipe_put_ex(
    apr_file_t** file,
    apr_os_file_t* thefile,
    int register_cleanup,
    apr_pool_t* cont
);

apr_status_t
apr_os_dir_put(
    apr_dir_t** dir,
    apr_os_dir_t* thedir,
    apr_pool_t* cont
);

apr_status_t
apr_os_sock_put(
    apr_socket_t** sock,
    apr_os_sock_t* thesock,
    apr_pool_t* cont
);

apr_status_t
apr_os_sock_make(
    apr_socket_t** apr_sock,
    apr_os_sock_info_t* os_sock_info,
    apr_pool_t* cont
);

apr_status_t
apr_os_proc_mutex_put(
    apr_proc_mutex_t** pmutex,
    apr_os_proc_mutex_t* ospmutex,
    apr_pool_t* cont
);

apr_status_t
apr_os_imp_time_put(
    apr_time_t* aprtime,
    apr_os_imp_time_t** ostime,
    apr_pool_t* cont
);

apr_status_t
apr_os_exp_time_put(
    apr_time_exp_t* aprtime,
    apr_os_exp_time_t** ostime,
    apr_pool_t* cont
);

apr_status_t
apr_os_shm_put(
    apr_shm_t** shm,
    apr_os_shm_t* osshm,
    apr_pool_t* cont
);

apr_status_t
apr_os_uuid_get(unsigned char* uuid_data);

const char*
apr_os_default_encoding(apr_pool_t* pool);

const char*
apr_os_locale_encoding(apr_pool_t* pool);

// macros

#define apr_os_global_mutex_get
#define apr_os_global_mutex_t

Detailed Documentation

Typedefs

typedef int apr_os_file_t

native file

typedef DIR apr_os_dir_t

native dir

typedef int apr_os_sock_t

native dir

typedef struct apr_os_proc_mutex_t apr_os_proc_mutex_t

native process mutex

typedef pthread_t apr_os_thread_t

native thread

typedef pthread_key_t apr_os_threadkey_t

native thread address space

typedef pid_t apr_os_proc_t

native pid

typedef struct timeval apr_os_imp_time_t

native timeval

typedef struct tm apr_os_exp_time_t

native tm

typedef void* apr_os_dso_handle_t

native dso types

typedef void* apr_os_shm_t

native SHM

typedef struct apr_os_sock_info_t apr_os_sock_info_t

alias for local OS socket

Global Functions

apr_status_t
apr_os_file_get(
    apr_os_file_t* thefile,
    apr_file_t* file
)

convert the file from apr type to os specific type. On Unix, it is only possible to get a file descriptor from an apr file type.

Parameters:

thefile

The os specific file we are converting to

file

The apr file to convert.

apr_status_t
apr_os_dir_get(
    apr_os_dir_t** thedir,
    apr_dir_t* dir
)

convert the dir from apr type to os specific type.

Parameters:

thedir

The os specific dir we are converting to

dir

The apr dir to convert.

apr_status_t
apr_os_sock_get(
    apr_os_sock_t* thesock,
    apr_socket_t* sock
)

Convert the socket from an apr type to an OS specific socket

Parameters:

thesock

The socket to convert.

sock

The os specific equivalent of the apr socket..

apr_status_t
apr_os_proc_mutex_get(
    apr_os_proc_mutex_t* ospmutex,
    apr_proc_mutex_t* pmutex
)

Convert the proc mutex from os specific type to apr type

Parameters:

ospmutex

The os specific proc mutex we are converting to.

pmutex

The apr proc mutex to convert.

apr_status_t
apr_os_exp_time_get(
    apr_os_exp_time_t** ostime,
    apr_time_exp_t* aprtime
)

Get the exploded time in the platforms native format.

Parameters:

ostime

the native time format

aprtime

the time to convert

apr_status_t
apr_os_imp_time_get(
    apr_os_imp_time_t** ostime,
    apr_time_t* aprtime
)

Get the imploded time in the platforms native format.

Parameters:

ostime

the native time format

aprtime

the time to convert

apr_status_t
apr_os_shm_get(
    apr_os_shm_t* osshm,
    apr_shm_t* shm
)

convert the shm from apr type to os specific type.

Parameters:

osshm

The os specific shm representation

shm

The apr shm to convert.

apr_status_t
apr_os_file_put(
    apr_file_t** file,
    apr_os_file_t* thefile,
    apr_int32_t flags,
    apr_pool_t* cont
)

convert the file from os specific type to apr type. On Unix, it is only possible to put a file descriptor into an apr file type.

Parameters:

file

The apr file we are converting to.

thefile

The os specific file to convert

flags

The flags that were used to open this file.

cont

The pool to use if it is needed.

apr_status_t
apr_os_pipe_put(
    apr_file_t** file,
    apr_os_file_t* thefile,
    apr_pool_t* cont
)

convert the file from os specific type to apr type. On Unix, it is only possible to put a file descriptor into an apr file type.

Parameters:

file

The apr file we are converting to.

thefile

The os specific pipe to convert

cont

The pool to use if it is needed.

apr_status_t
apr_os_pipe_put_ex(
    apr_file_t** file,
    apr_os_file_t* thefile,
    int register_cleanup,
    apr_pool_t* cont
)

convert the file from os specific type to apr type. On Unix, it is only possible to put a file descriptor into an apr file type.

Parameters:

file

The apr file we are converting to.

thefile

The os specific pipe to convert

register_cleanup

A cleanup will be registered on the apr_file_t to issue apr_file_close().

cont

The pool to use if it is needed.

apr_status_t
apr_os_dir_put(
    apr_dir_t** dir,
    apr_os_dir_t* thedir,
    apr_pool_t* cont
)

convert the dir from os specific type to apr type.

Parameters:

dir

The apr dir we are converting to.

thedir

The os specific dir to convert

cont

The pool to use when creating to apr directory.

apr_status_t
apr_os_sock_put(
    apr_socket_t** sock,
    apr_os_sock_t* thesock,
    apr_pool_t* cont
)

Convert a socket from the os specific type to the apr type If it is a true socket, it is best to call apr_os_sock_make() and provide APR with more information about the socket.

Parameters:

sock

The pool to use.

thesock

The socket to convert to.

cont

The socket we are converting to an apr type.

apr_status_t
apr_os_sock_make(
    apr_socket_t** apr_sock,
    apr_os_sock_info_t* os_sock_info,
    apr_pool_t* cont
)

Create a socket from an existing descriptor and local and remote socket addresses. If you only know the descriptor/handle or if it isn’t really a true socket, use apr_os_sock_put() instead.

Parameters:

apr_sock

The new socket that has been set up

os_sock_info

The os representation of the socket handle and other characteristics of the socket

cont

The pool to use

apr_status_t
apr_os_proc_mutex_put(
    apr_proc_mutex_t** pmutex,
    apr_os_proc_mutex_t* ospmutex,
    apr_pool_t* cont
)

Convert the proc mutex from os specific type to apr type

Parameters:

pmutex

The apr proc mutex we are converting to.

ospmutex

The os specific proc mutex to convert.

cont

The pool to use if it is needed.

apr_status_t
apr_os_imp_time_put(
    apr_time_t* aprtime,
    apr_os_imp_time_t** ostime,
    apr_pool_t* cont
)

Put the imploded time in the APR format.

Parameters:

aprtime

the APR time format

ostime

the time to convert

cont

the pool to use if necessary

apr_status_t
apr_os_exp_time_put(
    apr_time_exp_t* aprtime,
    apr_os_exp_time_t** ostime,
    apr_pool_t* cont
)

Put the exploded time in the APR format.

Parameters:

aprtime

the APR time format

ostime

the time to convert

cont

the pool to use if necessary

apr_status_t
apr_os_shm_put(
    apr_shm_t** shm,
    apr_os_shm_t* osshm,
    apr_pool_t* cont
)

convert the shared memory from os specific type to apr type. On fork()ed architectures, this is typically nothing more than the memory block mapped. On non-fork architectures, this is typically some internal handle to pass the mapping from process to process.

Parameters:

shm

The apr shm representation of osshm

osshm

The os specific shm identity

cont

The pool to use if it is needed.

apr_status_t
apr_os_uuid_get(unsigned char* uuid_data)

Private: apr-util’s apr_uuid module when supported by the platform

const char*
apr_os_default_encoding(apr_pool_t* pool)

Get the name of the system default character set.

Parameters:

pool

the pool to allocate the name from, if needed

const char*
apr_os_locale_encoding(apr_pool_t* pool)

Get the name of the current locale character set. Defers to apr_os_default_encoding if the current locale’s data can’t be retrieved on this system.

Parameters:

pool

the pool to allocate the name from, if needed

Macros

#define apr_os_global_mutex_get

Returns:

apr_os_global_mutex

#define apr_os_global_mutex_t

Opaque global mutex type