summaryrefslogtreecommitdiff
path: root/source3/smbd/dosmode.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-10-31 15:45:45 -0700
committerJeremy Allison <jra@samba.org>2007-10-31 15:45:45 -0700
commit8f1f2f04c796a8659d93bafadefca4a98fee00f0 (patch)
tree48921021ab7133572ee5540d5613c1352f05801a /source3/smbd/dosmode.c
parent695c4a7a741f1a8a00a4dc867cc3ef731bfc093f (diff)
downloadsamba-8f1f2f04c796a8659d93bafadefca4a98fee00f0.tar.gz
samba-8f1f2f04c796a8659d93bafadefca4a98fee00f0.tar.bz2
samba-8f1f2f04c796a8659d93bafadefca4a98fee00f0.zip
Fix some cases where file_set_dosmode was being passed
False instead of NULL. Fix more of the notifications to be correct for Samba4 RAW-NOTIFY torture (we had missed one when calling set_ea_dos_attribute(). Jeremy. (This used to be commit 39d265375cf55eedddef2c4faa65398df73d5ed2)
Diffstat (limited to 'source3/smbd/dosmode.c')
-rw-r--r--source3/smbd/dosmode.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c
index ed622d3730..18e6439be4 100644
--- a/source3/smbd/dosmode.c
+++ b/source3/smbd/dosmode.c
@@ -425,7 +425,8 @@ uint32 dos_mode(connection_struct *conn, const char *path,SMB_STRUCT_STAT *sbuf)
int file_set_dosmode(connection_struct *conn, const char *fname,
uint32 dosmode, SMB_STRUCT_STAT *st,
- const char *parent_dir)
+ const char *parent_dir,
+ bool newfile)
{
SMB_STRUCT_STAT st1;
int mask=0;
@@ -455,6 +456,10 @@ int file_set_dosmode(connection_struct *conn, const char *fname,
/* Store the DOS attributes in an EA by preference. */
if (set_ea_dos_attribute(conn, fname, st, dosmode)) {
+ if (!newfile) {
+ notify_fname(conn, NOTIFY_ACTION_MODIFIED,
+ FILE_NOTIFY_CHANGE_ATTRIBUTES, fname);
+ }
return 0;
}
@@ -491,8 +496,10 @@ int file_set_dosmode(connection_struct *conn, const char *fname,
}
if ((ret = SMB_VFS_CHMOD(conn,fname,unixmode)) == 0) {
- notify_fname(conn, NOTIFY_ACTION_MODIFIED,
- FILE_NOTIFY_CHANGE_ATTRIBUTES, fname);
+ if (!newfile) {
+ notify_fname(conn, NOTIFY_ACTION_MODIFIED,
+ FILE_NOTIFY_CHANGE_ATTRIBUTES, fname);
+ }
return 0;
}
@@ -523,8 +530,10 @@ int file_set_dosmode(connection_struct *conn, const char *fname,
ret = SMB_VFS_FCHMOD(fsp, fsp->fh->fd, unixmode);
unbecome_root();
close_file_fchmod(fsp);
- notify_fname(conn, NOTIFY_ACTION_MODIFIED,
- FILE_NOTIFY_CHANGE_ATTRIBUTES, fname);
+ if (!newfile) {
+ notify_fname(conn, NOTIFY_ACTION_MODIFIED,
+ FILE_NOTIFY_CHANGE_ATTRIBUTES, fname);
+ }
}
return( ret );