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/05/12 20:03:54 UTC

cvs commit: apache-apr/apr/file_io/unix dir.c fileacc.c filedup.c fileio.h filestat.c open.c pipe.c readwrite.c seek.c

rbb         99/05/12 11:03:51

  Modified:    include  apr_file_io.h
               docs     fileio.txt
               apr/file_io/unix dir.c fileacc.c filedup.c fileio.h
                        filestat.c open.c pipe.c readwrite.c seek.c
  Log:
  Makes the file I/O code MUCH more portable, because programmers now only have
  to include apr_file_io.h, and apr takes care of the rest.  I will be doing this
  for the rest of the apr functions today.  This also begins to implement the
  new directory functions.  I have ignored the stuff to get the time and the
  filename, but it was just easier to change the other stuff while I was there.
  
  Revision  Changes    Path
  1.24      +5 -7      apache-apr/include/apr_file_io.h
  
  Index: apr_file_io.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_file_io.h,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- apr_file_io.h	1999/05/12 12:31:16	1.23
  +++ apr_file_io.h	1999/05/12 18:02:51	1.24
  @@ -56,7 +56,6 @@
   #ifndef APR_FILE_IO_H
   #define APR_FILE_IO_H
   
  -#include "fileio.h"
   #include "apr_general.h"
   #include "apr_errno.h"
   
  @@ -96,11 +95,10 @@
   /* should be same as whence type in lseek, POSIZ defines this as int */
   typedef ap_int32_t       ap_seek_where_t;
   
  -typedef struct file_t     ap_file_t;
  -typedef struct dir_t      ap_dir_t;
  -typedef fileperms_t       ap_fileperms_t;
  -typedef dirent_t          ap_dirent_t;
  -typedef iovec_t           ap_iovec_t;
  +typedef struct file_t            ap_file_t;
  +typedef struct dir_t             ap_dir_t;
  +typedef iovec_t                  ap_iovec_t;
  +typedef fileperms_t              ap_fileperms_t;
   
   /*   Function definitions */
   ap_file_t *ap_open(ap_context_t *, char *, ap_int32_t, ap_fileperms_t);
  @@ -118,7 +116,7 @@
   
   ap_dir_t *ap_opendir(ap_context_t *, const char *);
   ap_status_t ap_closedir(ap_context_t *, ap_dir_t *);
  -ap_dirent_t *ap_readdir(ap_context_t *, ap_dir_t *);
  +ap_status_t ap_readdir(ap_context_t *, ap_dir_t *);
   ap_status_t ap_rewinddir(ap_context_t *, ap_dir_t *);
   ap_status_t ap_make_dir(ap_context_t *, const char *, ap_fileperms_t);
   ap_status_t ap_remove_dir(ap_context_t *, const char *);
  
  
  
  1.21      +2 -2      apache-apr/docs/fileio.txt
  
  Index: fileio.txt
  ===================================================================
  RCS file: /home/cvs/apache-apr/docs/fileio.txt,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- fileio.txt	1999/05/10 14:36:17	1.20
  +++ fileio.txt	1999/05/12 18:03:01	1.21
  @@ -128,12 +128,12 @@
   	arg 2)  abstracted directory descriptor structure to be closed.
           return) APR_SUCCESS or APR_FAILURE
   
  - ap_dirent_t *ap_readdir(ap_context_t *, ap_dir_t *)
  + ap_status_t *ap_readdir(ap_context_t *, ap_dir_t *)
   	Retrieve the next directory entry from the specified directory.
        Arguments:
           arg 1)  The context to use.
   	arg 2)  Abstracted directory descriptor to read from.
  -	return) the next directory entry.
  +	return) APR_SUCCESS or APR_FAILURE.
   
    ap_status_t *ap_rewinddir(ap_context_t *, ap_dir_t *)
           Rewind directory to beginning of stream
  
  
  
  1.4       +15 -9     apache-apr/apr/file_io/unix/dir.c
  
  Index: dir.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/dir.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- dir.c	1999/05/10 14:36:24	1.3
  +++ dir.c	1999/05/12 18:03:08	1.4
  @@ -53,12 +53,13 @@
    *
    */
   
  -#include "apr_file_io.h"
   #include <errno.h>
   #include <string.h>
   #include <dirent.h>
  +#include "fileio.h"
  +#include "apr_file_io.h"
   
  -ap_status_t dir_cleanup(ap_dir_t *thedir)
  +ap_status_t dir_cleanup(struct dir_t *thedir)
   {
       if (closedir(thedir->dirstruct) == 0) {
           return APR_SUCCESS;
  @@ -68,9 +69,9 @@
       }
   } 
   
  -ap_dir_t *ap_opendir(ap_context_t *cont, const char *dirname)
  +struct dir_t *ap_opendir(ap_context_t *cont, const char *dirname)
   {
  -    ap_dir_t *thedir = (ap_dir_t *)ap_palloc(cont->pool, sizeof(ap_dir_t));
  +    struct dir_t *thedir = (struct dir_t *)ap_palloc(cont->pool, sizeof(struct dir_t));
   
       thedir->dirname = strdup(dirname);
       thedir->dirstruct = opendir(dirname);
  @@ -81,11 +82,12 @@
       }    
       else {
           ap_register_cleanup(cont->pool, (void *)thedir, dir_cleanup, NULL);
  +        thedir->entry = NULL;
           return thedir;
       }
   }
   
  -ap_status_t ap_closedir(ap_context_t *cont, ap_dir_t *thedir)
  +ap_status_t ap_closedir(ap_context_t *cont, struct dir_t *thedir)
   {
       if (dir_cleanup(thedir) == APR_SUCCESS) {
           ap_kill_cleanup(cont->pool, thedir, dir_cleanup);
  @@ -94,18 +96,22 @@
       return APR_FAILURE;
   }
   
  -ap_dirent_t *ap_readdir(ap_context_t *cont, ap_dir_t *thedir)
  +ap_status_t ap_readdir(ap_context_t *cont, struct dir_t *thedir)
   {
  -    return readdir(thedir->dirstruct);
  +    thedir->entry = readdir(thedir->dirstruct);
  +    if (thedir->entry == NULL) {
  +        return APR_FAILURE;
  +    }    
  +    return APR_SUCCESS;
   }
   
  -ap_status_t ap_rewinddir(ap_context_t *cont, ap_dir_t *thedir)
  +ap_status_t ap_rewinddir(ap_context_t *cont, struct dir_t *thedir)
   {
       rewinddir(thedir->dirstruct);
       return APR_SUCCESS;
   }
   
  -ap_status_t ap_make_dir(ap_context_t *cont, const char *path, ap_fileperms_t mode)
  +ap_status_t ap_make_dir(ap_context_t *cont, const char *path, fileperms_t mode)
   {
       if (mkdir(path, mode) == 0) {
           return APR_SUCCESS;
  
  
  
  1.5       +3 -2      apache-apr/apr/file_io/unix/fileacc.c
  
  Index: fileacc.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/fileacc.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- fileacc.c	1999/05/10 14:36:24	1.4
  +++ fileacc.c	1999/05/12 18:03:11	1.5
  @@ -53,14 +53,15 @@
    *
    */
   
  +#include "fileio.h"
   #include "apr_file_io.h"
   #include "apr_general.h"
   #include <errno.h>
   #include <string.h>
   
  -/* A file to put ALL of the accessor functions for ap_file_t types. */
  +/* A file to put ALL of the accessor functions for struct file_t types. */
   
  -char * ap_get_filename(ap_context_t *cont, ap_file_t *thefile)
  +char * ap_get_filename(ap_context_t *cont, struct file_t *thefile)
   {
       if (thefile != NULL) {
           return thefile->fname;
  
  
  
  1.8       +5 -4      apache-apr/apr/file_io/unix/filedup.c
  
  Index: filedup.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/filedup.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- filedup.c	1999/05/10 14:36:24	1.7
  +++ filedup.c	1999/05/12 18:03:12	1.8
  @@ -52,14 +52,15 @@
    * project, please see <http://www.apache.org/>.
    *
    */
  -#include <strings.h>
  +
  +#include "fileio.h"
   #include "apr_file_io.h"
   #include "apr_general.h"
  -#include "fileio.h"
  +#include <strings.h>
   
  -ap_file_t *ap_dupfile(ap_context_t *cont, ap_file_t *old_file)
  +struct file_t *ap_dupfile(ap_context_t *cont, struct file_t *old_file)
   {
  -    ap_file_t *new_file = (ap_file_t *)ap_palloc(cont->pool, sizeof(ap_file_t));
  +    struct file_t *new_file = (struct file_t *)ap_palloc(cont->pool, sizeof(struct file_t));
       
       if (new_file == NULL) {
           errno = ENOMEM;
  
  
  
  1.5       +2 -2      apache-apr/apr/file_io/unix/fileio.h
  
  Index: fileio.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/fileio.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- fileio.h	1999/05/10 14:36:24	1.4
  +++ fileio.h	1999/05/12 18:03:14	1.5
  @@ -93,10 +93,10 @@
   struct dir_t {
       char *dirname;
       DIR *dirstruct;
  +    struct dirent *entry;
   };
   
  -typedef mode_t            fileperms_t;
  -typedef struct dirent     dirent_t;
  +typedef mode_t            fileperms_t; 
   typedef struct iovec      iovec_t;
   
   ap_status_t file_cleanup(void *);
  
  
  
  1.4       +3 -2      apache-apr/apr/file_io/unix/filestat.c
  
  Index: filestat.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/filestat.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- filestat.c	1999/05/10 14:36:25	1.3
  +++ filestat.c	1999/05/12 18:03:17	1.4
  @@ -53,11 +53,12 @@
    *
    */
   
  +#include "fileio.h"
   #include "apr_file_io.h"
   #include "apr_general.h"
   #include "apr_errno.h"
   
  -ap_status_t ap_getfileinfo(ap_context_t *cont, char * fname, ap_file_t *thefile)
  +ap_status_t ap_getfileinfo(ap_context_t *cont, char * fname, struct file_t *thefile)
   {
       struct stat info;
       int rv = stat(fname, &info);
  @@ -78,7 +79,7 @@
       }
   }
   
  -ap_status_t ap_updatefileinfo(ap_context_t *cont, ap_file_t *thefile)
  +ap_status_t ap_updatefileinfo(ap_context_t *cont, struct file_t *thefile)
   {
       struct stat info;
       int rv = fstat(thefile->filedes, &info);
  
  
  
  1.18      +6 -5      apache-apr/apr/file_io/unix/open.c
  
  Index: open.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/open.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- open.c	1999/05/10 14:36:25	1.17
  +++ open.c	1999/05/12 18:03:19	1.18
  @@ -53,6 +53,7 @@
    *
    */
   
  +#include "fileio.h"
   #include "apr_file_io.h"
   #include "apr_general.h"
   #include "apr_lib.h"
  @@ -61,7 +62,7 @@
   
   ap_status_t file_cleanup(void *thefile)
   {
  -    ap_file_t *file = thefile;
  +    struct file_t *file = thefile;
       if (close(file->filedes) == 0) {
           file->filedes = -1;
           return APR_SUCCESS;
  @@ -72,13 +73,13 @@
       }
   }
   
  -ap_file_t *ap_open(ap_context_t *cont, char *fname, ap_int32_t flag,  ap_fileperms_t mode)
  +struct file_t *ap_open(ap_context_t *cont, char *fname, ap_int32_t flag,  fileperms_t mode)
   {
       int oflags = 0;
  -    ap_file_t *dafile;
  +    struct file_t *dafile;
       struct stat info;
       
  -    dafile = (ap_file_t *)ap_palloc(cont->pool, sizeof(ap_file_t));
  +    dafile = (struct file_t *)ap_palloc(cont->pool, sizeof(struct file_t));
   
       if ((flag & APR_READ) && (flag & APR_WRITE)) {
           oflags = O_RDWR;
  @@ -138,7 +139,7 @@
       }
   }
   
  -ap_status_t ap_close(ap_context_t *cont, ap_file_t *file)
  +ap_status_t ap_close(ap_context_t *cont, struct file_t *file)
   {
       if (file_cleanup(file) == APR_SUCCESS) {
           ap_kill_cleanup(cont->pool, file, file_cleanup);
  
  
  
  1.4       +3 -2      apache-apr/apr/file_io/unix/pipe.c
  
  Index: pipe.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/pipe.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- pipe.c	1999/05/10 14:36:25	1.3
  +++ pipe.c	1999/05/12 18:03:21	1.4
  @@ -53,6 +53,7 @@
    *
    */
   
  +#include "fileio.h"
   #include "apr_file_io.h"
   #include "apr_general.h"
   #include <errno.h>
  @@ -61,7 +62,7 @@
   #include <sys/types.h>
   #include <sys/stat.h>
   
  -ap_status_t ap_create_pipe(ap_context_t *cont, ap_file_t *in, ap_file_t *out)
  +ap_status_t ap_create_pipe(ap_context_t *cont, struct file_t *in, struct file_t *out)
   {
       int filedes[2];
   
  @@ -78,7 +79,7 @@
       return APR_SUCCESS;
   }
   
  -char *ap_create_namedpipe(ap_context_t *cont, char *dirpath, ap_fileperms_t mode)
  +char *ap_create_namedpipe(ap_context_t *cont, char *dirpath, fileperms_t mode)
   {
       char *tmp;
   
  
  
  
  1.7       +5 -3      apache-apr/apr/file_io/unix/readwrite.c
  
  Index: readwrite.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/readwrite.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- readwrite.c	1999/05/10 14:36:25	1.6
  +++ readwrite.c	1999/05/12 18:03:24	1.7
  @@ -53,13 +53,15 @@
    *
    */
   
  +#include "fileio.h"
   #include "apr_file_io.h"
   #include "apr_general.h"
   #include "apr_errno.h"
   #include <errno.h>
   #include <unistd.h>
   #include <sys/uio.h>
  -ap_ssize_t ap_read(ap_context_t *cont, ap_file_t *thefile, void *buf, ap_ssize_t nbytes)
  +
  +ap_ssize_t ap_read(ap_context_t *cont, struct file_t *thefile, void *buf, ap_ssize_t nbytes)
   {
       ap_size_t rv;
   
  @@ -73,7 +75,7 @@
       return rv;
   }
   
  -ap_ssize_t ap_write(ap_context_t *cont, ap_file_t *thefile, void *buf, ap_ssize_t nbytes)
  +ap_ssize_t ap_write(ap_context_t *cont, struct file_t *thefile, void *buf, ap_ssize_t nbytes)
   {
       ap_size_t rv;
       struct stat info;
  @@ -94,7 +96,7 @@
       return rv;
   }
   
  -ap_ssize_t ap_writev(ap_context_t *cont, ap_file_t *thefile, const ap_iovec_t * vec, ap_ssize_t iocnt)
  +ap_ssize_t ap_writev(ap_context_t *cont, struct file_t *thefile, const iovec_t * vec, ap_ssize_t iocnt)
   {
       int bytes;
       if ((bytes = writev(thefile->filedes, vec, iocnt)) < 0) {
  
  
  
  1.4       +2 -1      apache-apr/apr/file_io/unix/seek.c
  
  Index: seek.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/file_io/unix/seek.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- seek.c	1999/05/10 14:36:25	1.3
  +++ seek.c	1999/05/12 18:03:27	1.4
  @@ -53,11 +53,12 @@
    *
    */
   
  +#include "fileio.h"
   #include "apr_file_io.h"
   #include <errno.h>
   #include <string.h>
   
  -ap_off_t ap_seek(ap_context_t *cont, ap_file_t *thefile, ap_off_t offset, ap_seek_where_t where)
  +ap_off_t ap_seek(ap_context_t *cont, struct file_t *thefile, ap_off_t offset, ap_seek_where_t where)
   {
       return lseek(thefile->filedes, offset, where);
   }