svn commit: samba r7819 - in branches/SAMBA_3_0_RELEASE: . source/libsmb source/modules

jerry at samba.org jerry at samba.org
Tue Jun 21 20:56:53 GMT 2005


Author: jerry
Date: 2005-06-21 20:56:52 +0000 (Tue, 21 Jun 2005)
New Revision: 7819

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7819

Log:
svn merge -r7798:7817 svn+ssh://svn.samba.org/home/svn/samba/branches/SAMBA_3_0
Modified:
   branches/SAMBA_3_0_RELEASE/WHATSNEW.txt
   branches/SAMBA_3_0_RELEASE/source/libsmb/libsmbclient.c
   branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c


Changeset:
Modified: branches/SAMBA_3_0_RELEASE/WHATSNEW.txt
===================================================================
--- branches/SAMBA_3_0_RELEASE/WHATSNEW.txt	2005-06-21 20:39:51 UTC (rev 7818)
+++ branches/SAMBA_3_0_RELEASE/WHATSNEW.txt	2005-06-21 20:56:52 UTC (rev 7819)
@@ -242,6 +242,8 @@
     * Error code fixes when attempting to manipulating 
       non-existent shares.
     * Cleanup "net share migrate" code. 
+    * Allow to touch mtime in vfs-recycle with "recycle:touch_mtime 
+      = true".
 
 
 o   Renaud Duhaut <rd at duhaut.com> 
@@ -318,6 +320,8 @@
     * Correctly detect AF_LOCAL support in configure.
     * Fix problem updating file times on Windows 98 hosts using 
       libsmbclient.
+    * Fix compile breakage on Solaris by eliminating the use of 
+      ctime_r() in libsmbclient DEBUG statement.
 
 
 o   Jason Mader <jason at ncac.gwu.edu>

Modified: branches/SAMBA_3_0_RELEASE/source/libsmb/libsmbclient.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/libsmb/libsmbclient.c	2005-06-21 20:39:51 UTC (rev 7818)
+++ branches/SAMBA_3_0_RELEASE/source/libsmb/libsmbclient.c	2005-06-21 20:56:52 UTC (rev 7819)
@@ -3017,14 +3017,26 @@
                 m_time = tbuf[1].tv_sec;
         }
 
+        if (DEBUGLVL(4)) 
         {
+                char *p;
                 char atimebuf[32];
                 char mtimebuf[32];
 
-                DEBUG(4, ("smbc_utimes(%s, atime = %s mtime = %s)\n",
-                          fname,
-                          ctime_r(&a_time, atimebuf),
-                          ctime_r(&m_time, mtimebuf)));
+                strncpy(atimebuf, ctime(&a_time), sizeof(atimebuf));
+                atimebuf[sizeof(atimebuf) - 1] = '\0';
+                if ((p = strchr(atimebuf, '\n')) != NULL) {
+                        *p = '\0';
+                }
+
+                strncpy(mtimebuf, ctime(&m_time), sizeof(mtimebuf));
+                mtimebuf[sizeof(mtimebuf) - 1] = '\0';
+                if ((p = strchr(mtimebuf, '\n')) != NULL) {
+                        *p = '\0';
+                }
+
+                dbgtext("smbc_utimes(%s, atime = %s mtime = %s)\n",
+                        fname, atimebuf, mtimebuf);
         }
 
 	if (smbc_parse_path(context, fname,

Modified: branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c	2005-06-21 20:39:51 UTC (rev 7818)
+++ branches/SAMBA_3_0_RELEASE/source/modules/vfs_recycle.c	2005-06-21 20:56:52 UTC (rev 7819)
@@ -109,6 +109,17 @@
 	return ret;
 }
 
+static BOOL recycle_touch_mtime(vfs_handle_struct *handle)
+{
+	BOOL ret;
+
+	ret = lp_parm_bool(SNUM(handle->conn), "recycle", "touch_mtime", False);
+
+	DEBUG(10, ("recycle: touch_mtime = %s\n", ret?"True":"False"));
+	
+	return ret;
+}
+
 static const char **recycle_exclude(vfs_handle_struct *handle)
 {
 	const char **tmp_lp;
@@ -317,9 +328,9 @@
 }
 
 /**
- * Touch access date
+ * Touch access or modify date
  **/
-static void recycle_do_touch(vfs_handle_struct *handle, const char *fname)
+static void recycle_do_touch(vfs_handle_struct *handle, const char *fname, BOOL touch_mtime)
 {
 	SMB_STRUCT_STAT st;
 	struct utimbuf tb;
@@ -331,7 +342,7 @@
 	}
 	currtime = time(&currtime);
 	tb.actime = currtime;
-	tb.modtime = st.st_mtime;
+	tb.modtime = touch_mtime ? currtime : st.st_mtime;
 
 	if (SMB_VFS_NEXT_UTIME(handle, handle->conn, fname, &tb) == -1 ) {
 		DEBUG(0, ("recycle: touching %s failed, reason = %s\n", fname, strerror(errno)));
@@ -490,8 +501,8 @@
 	}
 
 	/* touch access date of moved file */
-	if (recycle_touch(handle) == True )
-		recycle_do_touch(handle, final_name);
+	if (recycle_touch(handle) == True || recycle_touch_mtime(handle))
+		recycle_do_touch(handle, final_name, recycle_touch_mtime(handle));
 
 done:
 	SAFE_FREE(path_name);



More information about the samba-cvs mailing list