Author: gd Date: 2005-06-21 11:27:17 +0000 (Tue, 21 Jun 2005) New Revision: 7807
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7807 Log: Allow to touch mtime in vfs-recycle with recycle:touch_mtime = true Guenther Modified: branches/SAMBA_3_0/source/modules/vfs_recycle.c trunk/source/modules/vfs_recycle.c Changeset: Modified: branches/SAMBA_3_0/source/modules/vfs_recycle.c =================================================================== --- branches/SAMBA_3_0/source/modules/vfs_recycle.c 2005-06-21 11:22:05 UTC (rev 7806) +++ branches/SAMBA_3_0/source/modules/vfs_recycle.c 2005-06-21 11:27:17 UTC (rev 7807) @@ -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); Modified: trunk/source/modules/vfs_recycle.c =================================================================== --- trunk/source/modules/vfs_recycle.c 2005-06-21 11:22:05 UTC (rev 7806) +++ trunk/source/modules/vfs_recycle.c 2005-06-21 11:27:17 UTC (rev 7807) @@ -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);
