Apache Portable Runtime
Bug List
globalScope> 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.
globalScope> 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.
globalScope> 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.
globalScope> 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.
globalScope> 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
globalScope> 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.
See also
apr_procattr_io_set instead for simple pipes.
globalScope> 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.
See also
apr_procattr_io_set instead for simple pipes.
globalScope> 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.
See also
apr_procattr_io_set instead for simple pipes.
globalScope> Global apr_socket_accept_filter (apr_socket_t *sock, char *name, char *args)
name and args should have been declared as const char *, as they are in APR 2.0
globalScope> 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