svn commit: samba r9007 - in branches/SAMBA_4_0/source/ntvfs/posix: .

tridge at samba.org tridge at samba.org
Wed Aug 3 17:22:34 GMT 2005


Author: tridge
Date: 2005-08-03 17:22:33 +0000 (Wed, 03 Aug 2005)
New Revision: 9007

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

Log:
fixed error code for setting delete on close on a non-empty directory


Modified:
   branches/SAMBA_4_0/source/ntvfs/posix/pvfs_dirlist.c
   branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c


Changeset:
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_dirlist.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_dirlist.c	2005-08-03 17:10:26 UTC (rev 9006)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_dirlist.c	2005-08-03 17:22:33 UTC (rev 9007)
@@ -310,3 +310,27 @@
 
 	return NT_STATUS_OBJECT_NAME_NOT_FOUND;
 }
+
+
+/*
+  see if a directory is empty
+*/
+BOOL pvfs_directory_empty(struct pvfs_state *pvfs, struct pvfs_filename *name)
+{
+	struct dirent *de;
+	DIR *dir = opendir(name->full_name);
+	if (dir == NULL) {
+		return True;
+	}
+
+	while ((de = readdir(dir))) {
+		if (strcmp(de->d_name, ".") != 0 &&
+		    strcmp(de->d_name, "..") != 0) {
+			closedir(dir);
+			return False;
+		}
+	}
+
+	closedir(dir);
+	return True;
+}

Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c	2005-08-03 17:10:26 UTC (rev 9006)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_open.c	2005-08-03 17:22:33 UTC (rev 9007)
@@ -1244,6 +1244,9 @@
 	}
 
 	if (f->handle->name->dos.attrib & FILE_ATTRIBUTE_DIRECTORY) {
+		if (!pvfs_directory_empty(pvfs, f->handle->name)) {
+			return NT_STATUS_DIRECTORY_NOT_EMPTY;
+		}
 		f->handle->create_options = create_options;
 		return NT_STATUS_OK;
 	}



More information about the samba-cvs mailing list