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

2000-01-10 Thread bjh
bjh 00/01/10 06:21:54

  Modified:src/lib/apr/file_io/os2 filedup.c fileio.h open.c pipe.c
  Log:
  OS/2: Implement delete on close  fix an allocation error in ap_open_stderr.
  
  Revision  ChangesPath
  1.5   +1 -0  apache-2.0/src/lib/apr/file_io/os2/filedup.c
  
  Index: filedup.c
  ===
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/filedup.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- filedup.c 1999/12/19 08:00:28 1.4
  +++ filedup.c 2000/01/10 14:21:53 1.5
  @@ -89,6 +89,7 @@
   dup_file-buffered = old_file-buffered;
   dup_file-status = old_file-status;
   dup_file-isopen = old_file-isopen;
  +dup_file-flags = old_file-flags;
   
   if (*new_file == NULL) {
   ap_register_cleanup(dup_file-cntxt, dup_file, file_cleanup,
  
  
  
  1.6   +1 -0  apache-2.0/src/lib/apr/file_io/os2/fileio.h
  
  Index: fileio.h
  ===
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/fileio.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- fileio.h  1999/12/19 09:41:26 1.5
  +++ fileio.h  2000/01/10 14:21:53 1.6
  @@ -75,6 +75,7 @@
   FILESTATUS3 status;
   int validstatus;
   int eof_hit;
  +ap_int32_t flags;
   
   /* Stuff for buffered mode */
   char *buffer;
  
  
  
  1.13  +12 -4 apache-2.0/src/lib/apr/file_io/os2/open.c
  
  Index: open.c
  ===
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/open.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- open.c1999/12/19 08:05:07 1.12
  +++ open.c2000/01/10 14:21:53 1.13
  @@ -84,6 +84,7 @@
   dafile-validstatus = FALSE;
   dafile-eof_hit = FALSE;
   dafile-buffer = NULL;
  +dafile-flags = flag;
   
   if ((flag  APR_READ)  (flag  APR_WRITE)) {
   mflags |= OPEN_ACCESS_READWRITE;
  @@ -148,7 +149,8 @@
   
   ap_status_t ap_close(ap_file_t *file)
   {
  -ULONG rc; 
  +ULONG rc;
  +ap_status_t status;
   
   if (file  file-isopen) {
   ap_flush(file);
  @@ -156,12 +158,16 @@
   
   if (rc == 0) {
   file-isopen = FALSE;
  -return APR_SUCCESS;
  +status = APR_SUCCESS;
  +
  +if (file-flags  APR_DELONCLOSE) {
  +status = os2errno(DosDelete(file-fname));
  +}
   } else {
   return os2errno(rc);
   }
   }
  -
  +
   return APR_SUCCESS;
   }
   
  @@ -199,6 +205,7 @@
   (*file)-buffered = FALSE;
   (*file)-validstatus = FALSE;
   (*file)-eof_hit = FALSE;
  +(*file)-flags = 0;
   return APR_SUCCESS;
   }
   
  @@ -216,7 +223,7 @@
   
   ap_status_t ap_open_stderr(struct file_t **thefile, ap_context_t *cont)
   {
  -(*thefile) = ap_palloc(cont, sizeof(ap_file_t *));
  +(*thefile) = ap_palloc(cont, sizeof(struct file_t));
   if ((*thefile) == NULL) {
   return APR_ENOMEM;
   }
  @@ -227,6 +234,7 @@
   (*thefile)-buffered = FALSE;
   (*thefile)-validstatus = FALSE;
   (*thefile)-eof_hit = FALSE;
  +(*thefile)-flags = 0;
   
   return APR_SUCCESS;
   }
  
  
  
  1.6   +2 -0  apache-2.0/src/lib/apr/file_io/os2/pipe.c
  
  Index: pipe.c
  ===
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/pipe.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- pipe.c1999/10/19 15:24:19 1.5
  +++ pipe.c2000/01/10 14:21:54 1.6
  @@ -76,6 +76,7 @@
   (*in)-fname = ap_pstrdup(cont, PIPE);
   (*in)-isopen = TRUE;
   (*in)-buffered = FALSE;
  +(*in)-flags = 0;
   ap_register_cleanup(cont, *in, file_cleanup, ap_null_cleanup);
   
   (*out) = (struct file_t *)ap_palloc(cont, sizeof(struct file_t));
  @@ -84,6 +85,7 @@
   (*out)-fname = ap_pstrdup(cont, PIPE);
   (*out)-isopen = TRUE;
   (*out)-buffered = FALSE;
  +(*out)-flags = 0;
   ap_register_cleanup(cont, *out, file_cleanup, ap_null_cleanup);
   
   return APR_SUCCESS;
  
  
  


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

1999-12-19 Thread bjh
bjh 99/12/19 00:00:32

  Modified:src/lib/apr/file_io/os2 filedup.c
  Log:
  OS/2: Let the user supply two file descriptors to ap_dupfile to make
  them equivalent.
  
  Revision  ChangesPath
  1.4   +24 -13apache-2.0/src/lib/apr/file_io/os2/filedup.c
  
  Index: filedup.c
  ===
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/filedup.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- filedup.c 1999/10/12 06:14:40 1.3
  +++ filedup.c 1999/12/19 08:00:28 1.4
  @@ -64,26 +64,37 @@
   ap_status_t ap_dupfile(struct file_t **new_file, struct file_t *old_file)
   {
   int rv;
  -struct file_t *dup_file = (struct file_t *)ap_palloc(old_file-cntxt, 
sizeof(struct file_t));
  -
  -if (new_file == NULL) {
  -return APR_ENOMEM;
  -} 
  -
  -dup_file-filedes = -1;
  +struct file_t *dup_file;
  +
  +if (*new_file == NULL) {
  +dup_file = (struct file_t *)ap_palloc(old_file-cntxt, sizeof(struct 
file_t));
  +
  +if (dup_file == NULL) {
  +return APR_ENOMEM;
  +}
  +
  +dup_file-filedes = -1;
  +dup_file-cntxt = old_file-cntxt;
  +} else {
  +  dup_file = *new_file;
  +}
  +
   rv = DosDupHandle(old_file-filedes, dup_file-filedes);
  -
  +
   if (rv) {
   return os2errno(rv);
   }
  -
  -dup_file-cntxt = old_file-cntxt;
  +
   dup_file-fname = ap_pstrdup(dup_file-cntxt, old_file-fname);
   dup_file-buffered = old_file-buffered;
   dup_file-status = old_file-status;
   dup_file-isopen = old_file-isopen;
  -*new_file = dup_file;
  -ap_register_cleanup(dup_file-cntxt, dup_file, file_cleanup,
  -ap_null_cleanup);
  +
  +if (*new_file == NULL) {
  +ap_register_cleanup(dup_file-cntxt, dup_file, file_cleanup,
  +ap_null_cleanup);
  +*new_file = dup_file;
  +}
  +
   return APR_SUCCESS;
   }