diff options
author | Yann Ylavic <ylavic@apache.org> | 2017-09-26 15:37:42 +0000 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2017-09-26 15:37:42 +0000 |
commit | be54c896ada61fda68a667f59ef6dea525325c00 (patch) | |
tree | 891f626d91f5fd5fd6114cd7a55b6b94d49f3f81 /file_io/unix | |
parent | 3798d89de0766389acf500f7f3f011a933c65214 (diff) | |
download | apr-be54c896ada61fda68a667f59ef6dea525325c00.tar.gz |
pipe: factorize apr_file_pipe_create*() in terms of static helper
file_pipe_create(), to avoid duplicated code.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1809757 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'file_io/unix')
-rw-r--r-- | file_io/unix/pipe.c | 43 |
1 files changed, 16 insertions, 27 deletions
diff --git a/file_io/unix/pipe.c b/file_io/unix/pipe.c index 7be16e5d0..b68ac6542 100644 --- a/file_io/unix/pipe.c +++ b/file_io/unix/pipe.c @@ -176,8 +176,11 @@ APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file, return apr_os_pipe_put_ex(file, thefile, 0, pool); } -static apr_status_t file_pipe_create(apr_file_t **in, apr_file_t **out, - apr_pool_t *pool_in, apr_pool_t *pool_out) +static apr_status_t file_pipe_create(apr_file_t **in, + apr_file_t **out, + apr_int32_t blocking, + apr_pool_t *pool_in, + apr_pool_t *pool_out) { int filedes[2]; @@ -220,11 +223,7 @@ static apr_status_t file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_cleanup_null); apr_pool_cleanup_register((*out)->pool, (void *)(*out), apr_unix_file_cleanup, apr_pool_cleanup_null); - return APR_SUCCESS; -} -static void file_pipe_block(apr_file_t **in, apr_file_t **out, apr_int32_t blocking) -{ switch (blocking) { case APR_FULL_BLOCK: break; @@ -239,12 +238,15 @@ static void file_pipe_block(apr_file_t **in, apr_file_t **out, apr_int32_t block apr_file_pipe_timeout_set(*in, 0); break; } + return APR_SUCCESS; } APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, - apr_file_t **out, apr_pool_t *pool) + apr_file_t **out, + apr_pool_t *pool) { - return file_pipe_create(in, out, pool, pool); + /* Default is full blocking pipes. */ + return file_pipe_create(in, out, APR_FULL_BLOCK, pool, pool); } APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in, @@ -252,29 +254,16 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in, apr_int32_t blocking, apr_pool_t *pool) { - apr_status_t status; - - if ((status = file_pipe_create(in, out, pool, pool)) != APR_SUCCESS) { - return status; - } - - file_pipe_block(in, out, blocking); - - return APR_SUCCESS; + return file_pipe_create(in, out, blocking, pool, pool); } APR_DECLARE(apr_status_t) apr_file_pipe_create_pools(apr_file_t **in, - apr_file_t **out, apr_int32_t blocking, apr_pool_t *pool_in, apr_pool_t *pool_out) + apr_file_t **out, + apr_int32_t blocking, + apr_pool_t *pool_in, + apr_pool_t *pool_out) { - apr_status_t status; - - if ((status = file_pipe_create(in, out, pool_in, pool_out)) != APR_SUCCESS) { - return status; - } - - file_pipe_block(in, out, blocking); - - return APR_SUCCESS; + return file_pipe_create(in, out, blocking, pool_in, pool_out); } APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, |