I've taken a shot at redoing this. Is this more what you're thinking?
Thanks.
Rob Simonson
[EMAIL PROTECTED]
apr/file_io/unix/filestat.c
===================================================================
--- filestat.c.old Thu Mar 14 11:20:04 2002
+++ filestat.c Fri Mar 22 09:49:34 2002
@@ -245,3 +245,35 @@
return apr_stat(finfo, fname, wanted | APR_FINFO_LINK, cont);
}
+APR_DECLARE(apr_status_t) apr_file_time_set(const char *fname,
+ enum apr_time_set_flag flag,
+ apr_time_t newtime)
+{
+#if APR_HAVE_UTIME_H
+ struct utimbuf utb;
+ int rc;
+
+ switch(flag) {
+ case APR_TIME_SET_ATIME:
+ utb.actime = (time_t)(newtime / APR_USEC_PER_SEC);
+ break;
+ case APR_TIME_SET_MTIME:
+ utb.modtime = (time_t)(newtime / APR_USEC_PER_SEC);
+ break;
+ case APR_TIME_SET_RESET:
+ rc = utime(fname, NULL);
+ return APR_SUCCESS;
+ case APR_TIME_SET_CTIME:
+ case APR_TIME_SET_CRTIME:
+ default:
+ return APR_ENOTIMPL;
+ }
+
+ rc = utime(fname, &utb);
+ if(rc != 0)
+ return errno;
+ return APR_SUCCESS;
+#else
+ return APR_ENOTIMPL;
+#endif
+}
apr/include/apr_file_info.h
===================================================================
--- apr_file_info.h.old Thu Mar 14 11:21:06 2002
+++ apr_file_info.h Fri Mar 22 09:48:42 2002
@@ -244,6 +244,22 @@
*/
APR_DECLARE(apr_status_t) apr_lstat(apr_finfo_t *finfo, const char *fname,
apr_int32_t wanted, apr_pool_t *cont);
+
+/**
+ * Set the specified file's access and modification times. The file is
+ * specified by filename, instead of using a pre-opened file. If the file
is a
+ * symlink, this function will resolve the link and set times for the file
the
+ * symlink refers to. If atime and mtime are zero, the access and
modification
+ * times are set to the current time.
+ * @param fname The name of the file to set times.
+ * @param atime The desired time value to change.
+ * @param newtime The new time value.
+ * @deffunc apr_status_t apr_file_time_set(const char *fname, enum
apr_time_set_flag flag, apr_time_t newtime)
+ * @tip This function returns APR_ENOTIMPL if the platform does not
support
+ * change of file access and modification times.
+ */
+APR_DECLARE(apr_status_t) apr_file_time_set(const char *fname, enum
apr_time_set_flag flag, apr_time_t newtime);
+
/** @} */
/**
* @defgroup APR_DIRECTORY Directory Manipulation Functions
apr/include/arch/fileio.h
===================================================================
--- fileio.h.old Thu Mar 14 11:36:35 2002
+++ fileio.h Fri Mar 22 09:49:21 2002
@@ -105,6 +105,9 @@
#ifdef BEOS
#include <kernel/OS.h>
#endif
+#if APR_HAVE_UTIME_H
+#include <utime.h>
+#endif
#if BEOS_BONE
#ifndef BONE7
@@ -148,6 +151,14 @@
DIR *dirstruct;
struct dirent *entry;
};
+
+enum apr_time_set_flag {
+ APR_TIME_SET_RESET,
+ APR_TIME_SET_ATIME,
+ APR_TIME_SET_MTIME,
+ APR_TIME_SET_CTIME,
+ APR_TIME_SET_CRTIME
+};
apr_status_t apr_unix_file_cleanup(void *);
apr/configure.in
===================================================================
--- configure.in.old Thu Mar 14 13:26:00 2002
+++ configure.in Fri Mar 22 09:51:34 2002
@@ -854,7 +854,8 @@
sys/types.h \
sys/uio.h \
sys/un.h \
- sys/wait.h)
+ sys/utime.h \
+ sys/wait.h)
dnl IRIX 6.5 has a problem in <netinet/tcp.h> which prevents it from
dnl being included by itself. Check for <netinet/tcp.h> manually,
@@ -903,6 +904,7 @@
AC_SUBST(signalh)
AC_SUBST(sys_waith)
AC_SUBST(pthreadh)
+AC_SUBST(utimeh)
dnl #----------------------------- Checking for h_errno in <netdb.h>
if test "$netdbh" = "1"; then
apr/include/apr.h.in
===================================================================
--- apr_h.in.old Thu Mar 14 12:20:25 2002
+++ apr_h.in Thu Mar 14 12:21:59 2002
@@ -63,6 +63,7 @@
#define APR_HAVE_SYS_WAIT_H @sys_waith@
#define APR_HAVE_TIME_H @timeh@
#define APR_HAVE_UNISTD_H @unistdh@
+#define APR_HAVE_UTIME_H @utimeh@
#define APR_HAVE_SHMEM_MMAP_TMP @havemmaptmp@
#define APR_HAVE_SHMEM_MMAP_SHM @havemmapshm@
apr/include/apr.hw
===================================================================
--- apr.hw.old Thu Mar 14 13:26:30 2002
+++ apr.hw Thu Mar 14 13:28:55 2002
@@ -129,6 +129,7 @@
#define APR_HAVE_STDDEF_H 1
#define APR_HAVE_PROCESS_H 1
#define APR_HAVE_TIME_H 1
+#define APR_HAVE_UTIME_H 0
#else
#define APR_HAVE_ARPA_INET_H 0
#define APR_HAVE_CONIO_H 0
@@ -162,6 +163,7 @@
#define APR_HAVE_STDDEF_H 0
#define APR_HAVE_PROCESS_H 0
#define APR_HAVE_TIME_H 0
+#define APR_HAVE_UTIME_H 0
#endif
#define APR_USE_FLOCK_SERIALIZE 0
apr/include/apr.hnw
===================================================================
--- apr.hnw.old Thu Mar 14 13:26:18 2002
+++ apr.hnw Thu Mar 14 13:28:11 2002
@@ -128,6 +128,7 @@
#define APR_HAVE_SYS_WAIT_H 0
#define APR_HAVE_TIME_H 1
#define APR_HAVE_UNISTD_H 1
+#define APR_HAVE_UTIME_H 0
#define APR_HAVE_SHMEM_MMAP_TMP 0
#define APR_HAVE_SHMEM_MMAP_SHM 0