Author: vlendec
Date: 2007-02-03 16:53:52 +0000 (Sat, 03 Feb 2007)
New Revision: 21131

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

Log:
Some notify fixes
Modified:
   branches/SAMBA_3_0/source/smbd/trans2.c
   branches/SAMBA_3_0/source/smbd/vfs.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/trans2.c     2007-02-03 13:31:47 UTC (rev 
21130)
+++ branches/SAMBA_3_0/source/smbd/trans2.c     2007-02-03 16:53:52 UTC (rev 
21131)
@@ -3779,6 +3779,11 @@
                                const SMB_STRUCT_STAT *psbuf,
                                struct utimbuf tvs)
 {
+       uint32 action =
+               FILE_NOTIFY_CHANGE_LAST_ACCESS
+               |FILE_NOTIFY_CHANGE_LAST_WRITE;
+
+       
        if (!VALID_STAT(*psbuf)) {
                return NT_STATUS_OBJECT_NAME_NOT_FOUND;
        }
@@ -3786,10 +3791,12 @@
        /* get some defaults (no modifications) if any info is zero or -1. */
        if (null_mtime(tvs.actime)) {
                tvs.actime = psbuf->st_atime;
+               action &= ~FILE_NOTIFY_CHANGE_LAST_ACCESS;
        }
 
        if (null_mtime(tvs.modtime)) {
                tvs.modtime = psbuf->st_mtime;
+               action &= ~FILE_NOTIFY_CHANGE_LAST_WRITE;
        }
 
        DEBUG(6,("smb_set_file_time: actime: %s " , ctime(&tvs.actime)));
@@ -3826,6 +3833,9 @@
        if(file_utime(conn, fname, &tvs)!=0) {
                return map_nt_error_from_unix(errno);
        }
+       if (action != 0) {
+               notify_fname(conn, NOTIFY_ACTION_MODIFIED, action, fname);
+       }
        return NT_STATUS_OK;
 }
 

Modified: branches/SAMBA_3_0/source/smbd/vfs.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/vfs.c        2007-02-03 13:31:47 UTC (rev 
21130)
+++ branches/SAMBA_3_0/source/smbd/vfs.c        2007-02-03 16:53:52 UTC (rev 
21131)
@@ -514,8 +514,13 @@
        release_level_2_oplocks_on_change(fsp);
        DEBUG(10,("vfs_set_filelen: ftruncate %s to len %.0f\n", fsp->fsp_name, 
(double)len));
        flush_write_cache(fsp, SIZECHANGE_FLUSH);
-       if ((ret = SMB_VFS_FTRUNCATE(fsp, fsp->fh->fd, len)) != -1)
+       if ((ret = SMB_VFS_FTRUNCATE(fsp, fsp->fh->fd, len)) != -1) {
                set_filelen_write_cache(fsp, len);
+               notify_fname(fsp->conn, NOTIFY_ACTION_MODIFIED,
+                            FILE_NOTIFY_CHANGE_SIZE
+                            | FILE_NOTIFY_CHANGE_ATTRIBUTES,
+                            fsp->fsp_name);
+       }
 
        return ret;
 }

Reply via email to