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;