summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--file_io/unix/filedup.c12
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,