diff options
author | Jeremy Allison <jra@samba.org> | 1999-01-21 02:41:42 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1999-01-21 02:41:42 +0000 |
commit | 1cea3dc96fb09a6016f46aad86b79af4f1600c85 (patch) | |
tree | 342a8ed11cb56e4ddd52fb5bb8790cd177bbc537 /source/smbd/close.c | |
parent | 9a274b4e760c974f438616dbceb44420ea3ef19d (diff) | |
download | samba-1cea3dc96fb09a6016f46aad86b79af4f1600c85.tar.gz samba-1cea3dc96fb09a6016f46aad86b79af4f1600c85.tar.xz samba-1cea3dc96fb09a6016f46aad86b79af4f1600c85.zip |
Added code to let NT do a 'delete on close' request on an open
directory handle. WinCenter (multi-user NT system) is doing
this. This code still needs testing....
Jeremy.
Diffstat (limited to 'source/smbd/close.c')
-rw-r--r-- | source/smbd/close.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/source/smbd/close.c b/source/smbd/close.c index 708571bae6b..52e6a4940bc 100644 --- a/source/smbd/close.c +++ b/source/smbd/close.c @@ -177,11 +177,30 @@ with error %s\n", fsp->fsp_name, strerror(errno) )); Close a directory opened by an NT SMB call. ****************************************************************************/ -void close_directory(files_struct *fsp) +void close_directory(files_struct *fsp, BOOL normal_close) { remove_pending_change_notify_requests_by_fid(fsp); /* + * NT can set delete_on_close of the last open + * reference to a directory also. + */ + + if (normal_close && fsp->directory_delete_on_close) { + BOOL ok = rmdir_internals(fsp->conn, fsp->fsp_name); + DEBUG(5,("close_directory: %s. Delete on close was set - deleting directory %s.\n", + fsp->fsp_name, ok ? "succeeded" : "failed" )); + + /* + * Ensure we remove any change notify requests that would + * now fail as the directory has been deleted. + */ + + if(ok) + remove_pending_change_notify_requests_by_filename(fsp); + } + + /* * Do the code common to files and directories. */ close_filestruct(fsp); |