Apache Portable Runtime
Bug List
Global apr_dso_load (apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx)
We aught to provide an alternative to RTLD_GLOBAL, which is the only supported method of loading DSOs today.
Global apr_file_pipe_create (apr_file_t **in, apr_file_t **out, apr_pool_t *pool)
Some platforms cannot toggle between blocking and nonblocking, and when passing a pipe as a standard handle to an application which does not expect it, a non-blocking stream will fluxor the client app.
Global APR_FILEPATH_NOTABOVEROOT
in APR 0.9 and 1.x, this flag's behavior is undefined if the rootpath is NULL or empty. In APR 2.0 this should be changed to imply NOTABSOLUTE if the rootpath is NULL or empty.
Global apr_poll (apr_pollfd_t *aprset, apr_int32_t numsock, apr_int32_t *nsds, apr_interval_time_t timeout)
With versions 1.4.2 and prior on Windows, a call with no descriptors and timeout will return immediately with the wrong error code.
Global apr_pollcb_poll (apr_pollcb_t *pollcb, apr_interval_time_t timeout, apr_pollcb_cb_t func, void *baton)
With versions 1.4.2 and prior on Windows, a call with no descriptors and timeout will return immediately with the wrong error code.
Global apr_pollset_poll (apr_pollset_t *pollset, apr_interval_time_t timeout, apr_int32_t *num, const apr_pollfd_t **descriptors)
With versions 1.4.2 and prior on Windows, a call with no descriptors and timeout will return immediately with the wrong error code.
Global apr_proc_other_child_register (apr_proc_t *proc, void(*maintenance)(int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p)

write_fd duplicates the proc->out stream, it's really redundant and should be replaced in the APR 1.0 API with a bitflag of which proc->in/out/err handles should be health checked.

no platform currently tests the pipes health.

Global apr_proc_t::invoked
This should either always or never be present in release builds - since it breaks binary compatibility. We may enable it always in APR 1.0 yet leave it undefined in most cases.
Global apr_proc_wait_all_procs (apr_proc_t *proc, int *exitcode, apr_exit_why_e *exitwhy, apr_wait_how_e waithow, apr_pool_t *p)
Passing proc as a *proc rather than **proc was an odd choice for some platforms... this should be revisited in 1.0
Global apr_procattr_child_err_set (struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err)
Note that calling this function with two NULL files on some platforms creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor is it supported.
Global apr_procattr_child_in_set (struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in)
Note that calling this function with two NULL files on some platforms creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor is it supported.
Global apr_procattr_child_out_set (struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out)
Note that calling this function with two NULL files on some platforms creates an APR_FULL_BLOCK pipe, but this behavior is neither portable nor is it supported.
Global apr_strtoff (apr_off_t *offset, const char *buf, char **end, int base)
*end breaks type safety; where *buf is const, *end needs to be declared as const in APR 2.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines