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; }