apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Simonson" <s...@us.ibm.com>
Subject Re: How 'bout this (was: [PATCH] Adding an apr_utime() function)
Date Thu, 14 Mar 2002 19:51:01 GMT

Thanks for your input Jeff.  I've revised this patch some.   Here it is...

Thanks.

Rob Simonson
simo@us.ibm.com


apr/file_io/unix/filestat.c
===================================================================
--- filestat.c.old      Thu Mar 14 11:20:04 2002
+++ filestat.c    Thu Mar 14 13:19:02 2002
@@ -245,3 +245,26 @@
     return apr_stat(finfo, fname, wanted | APR_FINFO_LINK, cont);
 }

+APR_DECLARE(apr_status_t) apr_file_time_set(const char *fname,
+                                            apr_time_t atime,
+                                            apr_time_t mtime)
+{
+#if APR_HAVE_UTIME_H
+    struct utimbuf utb;
+    int rc;
+
+    if ((atime == 0) && (mtime == 0)) {
+        rc = utime(fname, NULL);
+    }
+    else {
+        utb.actime = (time_t)(atime / APR_USEC_PER_SEC);
+        utb.modtime = (time_t)(mtime / APR_USEC_PER_SEC);
+        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     Thu Mar 14 13:14:45 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 access time.
+ * @param mtime The desired modification time.
+ * @deffunc apr_status_t apr_file_time_set(const char *fname, apr_time_t
atime, apr_time_t mtime)
+ * @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, apr_time_t
atime, apr_time_t mtime);
+
 /** @} */
 /**
  * @defgroup APR_DIRECTORY Directory Manipulation Functions


apr/include/arch/fileio.h
===================================================================
--- fileio.h.old  Thu Mar 14 11:36:35 2002
+++ fileio.h      Thu Mar 14 12:07:19 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

apr/configure.in
===================================================================
--- configure.in.old    Thu Mar 14 13:26:00 2002
+++ configure.in  Thu Mar 14 13:42:05 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(utime)

 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





"Robert Simonson" <simo@us.ibm.com> writes:

> This patch adds apr_utime() to the APR.  I did this against the unix
> directories.

A missing piece for unix is detecting the presence of utime.h and
setting the utimeh variable.  I think you just need to add utime.h to
the APR_FLAG_HEADERS invocation in configure.in, then add an
AC_SUBST(utimeh) invocation with the rest of them.

> I don't know how this affects (if at all) other platforms.

If somebody cares they will implement; if not, then it will be missing
until somebody starts caring.  I wonder if a feature test macro is
needed.  Initially we'd need to set APR_HAVE_UTIME_H to 0 in apr.hw
(Win32) and apr.hnw (Netware).

As far as the name apr_utime():

  no freakin' way :)  I'd suggest something like apr_file_time_set().

As far as which times to set (atime, ctime, mtime):

  I don't care about ctime either.  I wonder if anybody else cares.

As far as how to specify those times:

  I'd vote for separate parameters instead of stuffing them in a
  structure.  I don't see the benefit to the structure.

--
Jeff Trawick | trawick@attglobal.net
Born in Roswell... married an alien...





Mime
View raw message