Author: vlendec
Date: 2007-01-07 18:08:50 +0000 (Sun, 07 Jan 2007)
New Revision: 20597

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

Log:
Survive some of the notify mask tests.
Modified:
   branches/SAMBA_3_0/source/smbd/dosmode.c
   branches/SAMBA_3_0/source/smbd/notify.c
   branches/SAMBA_3_0/source/smbd/reply.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/dosmode.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/dosmode.c    2007-01-07 15:26:35 UTC (rev 
20596)
+++ branches/SAMBA_3_0/source/smbd/dosmode.c    2007-01-07 18:08:50 UTC (rev 
20597)
@@ -499,8 +499,11 @@
                unixmode |= (st->st_mode & (S_IWUSR|S_IWGRP|S_IWOTH));
        }
 
-       if ((ret = SMB_VFS_CHMOD(conn,fname,unixmode)) == 0)
+       if ((ret = SMB_VFS_CHMOD(conn,fname,unixmode)) == 0) {
+               notify_fname(conn, fname, FILE_NOTIFY_CHANGE_ATTRIBUTES,
+                            NOTIFY_ACTION_MODIFIED);
                return 0;
+       }
 
        if((errno != EPERM) && (errno != EACCES))
                return -1;
@@ -529,6 +532,8 @@
                ret = SMB_VFS_FCHMOD(fsp, fsp->fh->fd, unixmode);
                unbecome_root();
                close_file_fchmod(fsp);
+               notify_fname(conn, fname, FILE_NOTIFY_CHANGE_ATTRIBUTES,
+                            NOTIFY_ACTION_MODIFIED);
        }
 
        return( ret );
@@ -601,6 +606,9 @@
                DEBUG(4,("set_filetime(%s) failed: 
%s\n",fname,strerror(errno)));
                return False;
        }
+
+       notify_fname(conn, fname, FILE_NOTIFY_CHANGE_LAST_WRITE,
+                    NOTIFY_ACTION_MODIFIED);
   
        return(True);
 } 

Modified: branches/SAMBA_3_0/source/smbd/notify.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/notify.c     2007-01-07 15:26:35 UTC (rev 
20596)
+++ branches/SAMBA_3_0/source/smbd/notify.c     2007-01-07 18:08:50 UTC (rev 
20597)
@@ -541,6 +541,20 @@
        TALLOC_FREE(lck);
 }
 
+void notify_fname(connection_struct *conn, const char *path,
+                 uint32 filter, uint32 action)
+{
+       char *parent;
+       const char *name;
+
+       if (!parent_dirname_talloc(tmp_talloc_ctx(), path, &parent, &name)) {
+               return;
+       }
+
+       notify_action(conn, parent, name, filter, action);
+       TALLOC_FREE(parent);
+}
+
 static void notify_fsp(files_struct *fsp, struct notify_message *msg)
 {
        struct notify_change *change, *changes;

Modified: branches/SAMBA_3_0/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/reply.c      2007-01-07 15:26:35 UTC (rev 
20596)
+++ branches/SAMBA_3_0/source/smbd/reply.c      2007-01-07 18:08:50 UTC (rev 
20597)
@@ -2026,9 +2026,6 @@
                mangle_check_cache( mask, sizeof(pstring)-1, conn->params );
        
        if (!has_wild) {
-               char *dir;
-               const char *fname;
-
                pstrcat(directory,"/");
                pstrcat(directory,mask);
                error = can_delete(conn,directory,dirtype,bad_path);
@@ -2039,12 +2036,7 @@
                        count++;
                }
 
-               if (parent_dirname_talloc(tmp_talloc_ctx(), orig_name,
-                                         &dir, &fname)) {
-                       notify_action(conn, dir, fname, -1,
-                                     NOTIFY_ACTION_REMOVED);
-                       TALLOC_FREE(dir); /* not strictly necessary */
-               }
+               notify_fname(conn, orig_name, -1, NOTIFY_ACTION_REMOVED);
 
        } else {
                struct smb_Dir *dir_hnd = NULL;

Reply via email to