diff options
author | wrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68> | 2003-03-19 02:08:28 +0000 |
---|---|---|
committer | wrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68> | 2003-03-19 02:08:28 +0000 |
commit | 9367b35ed3b689fda78dd071b22ef09ce546d9c4 (patch) | |
tree | 1050ed598f27cb127a04cafde1555890aa86cbe4 /file_io | |
parent | 9fbda5b61d60512d26277031fad04c082ef81f35 (diff) | |
download | libapr-9367b35ed3b689fda78dd071b22ef09ce546d9c4.tar.gz |
Bug Fix #1 .. Move the special-case of Netware into _dup_file() where
it belongs (this will be evident in bug #2). The patch fixes a fd
leak on Netware where each call to apr_file_dup2 failed to close the
original fd.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64423 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'file_io')
-rw-r--r-- | file_io/unix/filedup.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/file_io/unix/filedup.c b/file_io/unix/filedup.c index 7083286fe..e5cc94621 100644 --- a/file_io/unix/filedup.c +++ b/file_io/unix/filedup.c @@ -78,7 +78,15 @@ static apr_status_t _file_dup(apr_file_t **new_file, } if (which_dup == 2) { +#ifdef NETWARE + /* Apparently Netware doesn't support dup2... instead + * close() then dup() + */ + close((*new_file)->filedes); + rv = ((*new_file)->filedes = dup(old_file->filedes)); +#else rv = dup2(old_file->filedes, (*new_file)->filedes); +#endif } else { rv = ((*new_file)->filedes = dup(old_file->filedes)); } @@ -141,11 +149,7 @@ APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p) { -#ifdef NETWARE - return _file_dup(&new_file, old_file, p, 1); -#else return _file_dup(&new_file, old_file, p, 2); -#endif } APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, |