You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by st...@hyperreal.org on 2000/02/15 01:15:50 UTC

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

stoddard    00/02/14 16:15:49

  Modified:    src/lib/apr/file_io/win32 filedup.c open.c pipe.c
  Log:
  Fix some Windows APR problems found while trying to get piped logs working.
  
  Revision  Changes    Path
  1.5       +19 -6     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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- filedup.c	1999/12/15 18:06:31	1.4
  +++ filedup.c	2000/02/15 00:15:42	1.5
  @@ -61,16 +61,29 @@
   
   ap_status_t ap_dupfile(struct file_t **new_file, struct file_t *old_file)
   {
  +    int have_file = 0;
       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) = (struct file_t *)ap_pcalloc(old_file->cntxt,
  +                                                  sizeof(struct file_t));
  +        if ((*new_file) == NULL) {
  +            return APR_ENOMEM;
  +        }
  +    } else {
  +        have_file = 1;
       }
  +
       (*new_file)->cntxt = old_file->cntxt;
  -    DuplicateHandle(hCurrentProcess, old_file->filehand, hCurrentProcess, 
  -                   &(*new_file)->filehand, 0, FALSE, DUPLICATE_SAME_ACCESS); 
  +    if (have_file) {
  +        DuplicateHandle(hCurrentProcess, (*new_file)->filehand, hCurrentProcess, 
  +                        &old_file->filehand, 0, FALSE, DUPLICATE_SAME_ACCESS); 
  +    }
  +    else {
  +        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.18      +1 -3      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.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- open.c	2000/02/01 00:35:58	1.17
  +++ open.c	2000/02/15 00:15:44	1.18
  @@ -80,8 +80,6 @@
   {
       DWORD oflags = 0;
       DWORD createflags = 0;
  -    DWORD theerror;
  -    /*mode_t mode = get_fileperms(perm);*/
   
       (*dafile) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t));
   
  @@ -206,7 +204,7 @@
       if ((*thefile) == NULL) {
           return APR_ENOMEM;
       }
  -
  +    memset(*thefile, '\0', sizeof(struct file_t));
       (*thefile)->filehand = GetStdHandle(STD_ERROR_HANDLE);
       (*thefile)->cntxt = cont;
       (*thefile)->fname = NULL;
  
  
  
  1.4       +2 -0      apache-2.0/src/lib/apr/file_io/win32/pipe.c
  
  Index: pipe.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/win32/pipe.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- pipe.c	1999/10/06 23:03:54	1.3
  +++ pipe.c	2000/02/15 00:15:45	1.4
  @@ -72,10 +72,12 @@
       sa.lpSecurityDescriptor = NULL;
   
       (*in) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t));
  +    memset(*in, '\0', sizeof(struct file_t));
       (*in)->cntxt = cont;
       (*in)->fname = ap_pstrdup(cont, "PIPE");
   
       (*out) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t));
  +    memset(*out, '\0', sizeof(struct file_t));
       (*out)->cntxt = cont;
       (*out)->fname = ap_pstrdup(cont, "PIPE");