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/07/27 21:26:17 UTC
cvs commit: apache-apr/apr/file_io/unix dir.c fileacc.c fileio.h filestat.c open.c
rbb 99/07/27 12:26:17
Modified: apr/file_io/unix dir.c fileacc.c fileio.h filestat.c open.c
Log:
Cleanup file I/O code. We no longer do a stat on every open, but when a user
calls ap_getfileinfo, we are caching the results of that stat automatically.
I am also continuing with the APRDOC effort in the unix tree.
Revision Changes Path
1.17 +12 -0 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.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- dir.c 1999/07/06 17:01:38 1.16
+++ dir.c 1999/07/27 19:26:12 1.17
@@ -280,6 +280,12 @@
return APR_SUCCESS;
}
+/* ***APRDOC********************************************************
+ * ap_status_t ap_get_os_dir(ap_dir_t *, ap_os_dir_t *)
+ * convert the dir from apr type to os specific type.
+ * arg 1) The apr dir to convert.
+ * arg 2) The os specific dir we are converting to
+ */
ap_status_t ap_get_os_dir(struct dir_t *dir, ap_os_dir_t *thedir)
{
if (dir == NULL) {
@@ -289,6 +295,12 @@
return APR_SUCCESS;
}
+/* ***APRDOC********************************************************
+ * ap_status_t ap_get_os_dir(ap_dir_t *, ap_os_dir_t *)
+ * convert the dir from os specific type to apr type.
+ * arg 1) The os specific dir to convert
+ * arg 2) The apr dir we are converting to.
+ */
ap_status_t ap_put_os_dir(ap_context_t *cont, struct dir_t **dir,
ap_os_dir_t *thedir)
{
1.15 +15 -0 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.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- fileacc.c 1999/06/21 18:28:09 1.14
+++ fileacc.c 1999/07/27 19:26:13 1.15
@@ -118,6 +118,9 @@
ap_status_t ap_get_filesize(struct file_t *file, ap_ssize_t *size)
{
if (file != NULL) {
+ if (!file->stated) {
+ ap_getfileinfo(file);
+ }
*size = file->size;
return APR_SUCCESS;
}
@@ -136,6 +139,9 @@
ap_status_t ap_get_fileperms(struct file_t *file, ap_fileperms_t *perm)
{
if (file != NULL) {
+ if (!file->stated) {
+ ap_getfileinfo(file);
+ }
*perm = file->protection;
return APR_SUCCESS;
}
@@ -154,6 +160,9 @@
ap_status_t ap_get_fileatime(struct file_t *file, time_t *time)
{
if (file != NULL) {
+ if (!file->stated) {
+ ap_getfileinfo(file);
+ }
*time = file->atime;
return APR_SUCCESS;
}
@@ -172,6 +181,9 @@
ap_status_t ap_get_filectime(struct file_t *file, time_t *time)
{
if (file != NULL) {
+ if (!file->stated) {
+ ap_getfileinfo(file);
+ }
*time = file->ctime;
return APR_SUCCESS;
}
@@ -190,6 +202,9 @@
ap_status_t ap_get_filemtime(struct file_t *file, time_t *time)
{
if (file != NULL) {
+ if (!file->stated) {
+ ap_getfileinfo(file);
+ }
*time = file->mtime;
return APR_SUCCESS;
}
1.8 +1 -0 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.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- fileio.h 1999/05/21 19:53:13 1.7
+++ fileio.h 1999/07/27 19:26:13 1.8
@@ -71,6 +71,7 @@
int filedes;
char * fname;
int buffered;
+ int stated;
mode_t protection;
uid_t user;
gid_t group;
1.8 +4 -6 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.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- filestat.c 1999/06/01 12:05:42 1.7
+++ filestat.c 1999/07/27 19:26:13 1.8
@@ -59,12 +59,9 @@
#include "apr_errno.h"
/* ***APRDOC********************************************************
- * ap_status_t ap_remove_file(ap_context_t *, char *)
- * delete the specified file.
- * arg 1) The context to use.
- * arg 2) The full path to the file (using / on all systems)
- * NOTE: If the file is open, it won't be removed until all instances are
- * closed.
+ * ap_status_t ap_getfileinfo(ap_file_t *)
+ * get the specified file's stats..
+ * arg 1) The full to get information about.
*/
ap_status_t ap_getfileinfo(struct file_t *thefile)
{
@@ -79,6 +76,7 @@
thefile->atime = info.st_atime;
thefile->mtime = info.st_mtime;
thefile->ctime = info.st_ctime;
+ thefile->stated = 1;
return APR_SUCCESS;
}
else {
1.31 +15 -9 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.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- open.c 1999/07/06 17:01:39 1.30
+++ open.c 1999/07/27 19:26:14 1.31
@@ -146,15 +146,9 @@
(*new)->filedes = -1;
return errno;
}
-
- if (ap_getfileinfo(*new) == APR_SUCCESS) {
- ap_register_cleanup((*new)->cntxt, (void *)(*new), file_cleanup, NULL);
- return APR_SUCCESS;
- }
- else {
- (*new)->filedes = -1;
- return APR_ENOSTAT;
- }
+ (*new)->stated = 0; /* we haven't called stat for this file yet. */
+ ap_register_cleanup((*new)->cntxt, (void *)(*new), file_cleanup, NULL);
+ return APR_SUCCESS;
}
/* ***APRDOC********************************************************
@@ -191,6 +185,12 @@
}
}
+/* ***APRDOC********************************************************
+ * ap_status_t ap_get_os_file(ap_file_t *, ap_os_file_t *)
+ * convert the file from apr type to os specific type.
+ * arg 1) The apr file to convert.
+ * arg 2) The os specific file we are converting to
+ */
ap_status_t ap_get_os_file(struct file_t *file, ap_os_file_t *thefile)
{
if (file == NULL) {
@@ -200,6 +200,12 @@
return APR_SUCCESS;
}
+/* ***APRDOC********************************************************
+ * ap_status_t ap_get_os_file(ap_file_t *, ap_os_file_t *)
+ * convert the file from os specific type to apr type.
+ * arg 1) The os specific file to convert
+ * arg 2) The apr file we are converting to.
+ */
ap_status_t ap_put_os_file(ap_context_t *cont, struct file_t **file,
ap_os_file_t *thefile)
{