You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@hyperreal.org on 1999/12/15 19:06:36 UTC

cvs commit: apache-2.0/src/lib/apr/file_io/win32 filedup.c open.c

rbb         99/12/15 10:06:35

  Modified:    src/lib/apr/file_io/win32 filedup.c open.c
  Log:
  Fix ap_dupfile on Win32.  We need to actually duplicate the file, not
  just assign the old handle to the new ap_file_t.
  
  Revision  Changes    Path
  1.4       +4 -2      apache-2.0/src/lib/apr/file_io/win32/filedup.c
  
  Index: filedup.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/filedup.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- filedup.c	1999/10/12 06:14:43	1.3
  +++ filedup.c	1999/12/15 18:06:31	1.4
  @@ -61,14 +61,16 @@
   
   ap_status_t ap_dupfile(struct file_t **new_file, struct file_t *old_file)
   {
  +    HANDLE hCurrentProcess = GetCurrentProcess();
       (*new_file) = (struct file_t *)ap_palloc(old_file->cntxt,
                                  sizeof(struct file_t));
       
       if ((*new_file) == NULL) {
           return APR_ENOMEM;
       }
  -    (*new_file)->cntxt = old_file->cntxt; 
  -    (*new_file)->filehand = old_file->filehand; 
  +    (*new_file)->cntxt = old_file->cntxt;
  +    DuplicateHandle(hCurrentProcess, old_file->filehand, hCurrentProcess, 
  +                   &(*new_file)->filehand, 0, FALSE, DUPLICATE_SAME_ACCESS); 
       (*new_file)->fname = ap_pstrdup(old_file->cntxt, old_file->fname);
       (*new_file)->demonfname = ap_pstrdup(old_file->cntxt, old_file->demonfname);
       (*new_file)->lowerdemonfname = ap_pstrdup(old_file->cntxt, old_file->lowerdemonfname);
  
  
  
  1.14      +2 -1      apache-2.0/src/lib/apr/file_io/win32/open.c
  
  Index: open.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/open.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- open.c	1999/12/14 18:25:48	1.13
  +++ open.c	1999/12/15 18:06:32	1.14
  @@ -61,6 +61,7 @@
   #include "apr_lib.h"
   #include "apr_portable.h"
   #include <errno.h>
  +#include <winbase.h>
   #include <string.h>
   #include <sys/stat.h>
   
  @@ -202,7 +203,7 @@
   
   ap_status_t ap_open_stderr(struct file_t **thefile, ap_context_t *cont)
   {
  -    (*thefile) = ap_pcalloc(cont, sizeof(ap_os_file_t *));
  +    (*thefile) = ap_pcalloc(cont, sizeof(struct file_t *));
       if ((*thefile) == NULL) {
           return APR_ENOMEM;
       }