svn commit: samba r7617 - in branches/SAMBA_3_0/source/smbd: .

jra at samba.org jra at samba.org
Wed Jun 15 18:37:36 GMT 2005


Author: jra
Date: 2005-06-15 18:37:34 +0000 (Wed, 15 Jun 2005)
New Revision: 7617

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

Log:
Fix for bug #2801 - delete veto files was broken with the new
large directory code.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/smbd/dir.c
   branches/SAMBA_3_0/source/smbd/reply.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/dir.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/dir.c	2005-06-15 18:37:29 UTC (rev 7616)
+++ branches/SAMBA_3_0/source/smbd/dir.c	2005-06-15 18:37:34 UTC (rev 7617)
@@ -1111,13 +1111,29 @@
 }
 
 /*******************************************************************
+ Rewind to the start.
+********************************************************************/
+
+void RewindDir(struct smb_Dir *dirp, long *poffset)
+{
+	SMB_VFS_REWINDDIR(dirp->conn, dirp->dir);
+	dirp->file_number = 0;
+	dirp->offset = 0;
+	*poffset = 0;
+}
+
+/*******************************************************************
  Seek a dir.
 ********************************************************************/
 
 void SeekDir(struct smb_Dir *dirp, long offset)
 {
 	if (offset != dirp->offset) {
-		SMB_VFS_SEEKDIR(dirp->conn, dirp->dir, offset);
+		if (offset == 0) {
+			RewindDir(dirp, &offset);
+		} else {
+			SMB_VFS_SEEKDIR(dirp->conn, dirp->dir, offset);
+		}
 		dirp->offset = offset;
 	}
 }

Modified: branches/SAMBA_3_0/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/reply.c	2005-06-15 18:37:29 UTC (rev 7616)
+++ branches/SAMBA_3_0/source/smbd/reply.c	2005-06-15 18:37:34 UTC (rev 7617)
@@ -3768,7 +3768,7 @@
 		struct smb_Dir *dir_hnd = OpenDir(conn, directory);
 
 		if(dir_hnd != NULL) {
-			long dirpos = TellDir(dir_hnd);
+			long dirpos = 0;
 			while ((dname = ReadDirName(dir_hnd,&dirpos))) {
 				if((strcmp(dname, ".") == 0) || (strcmp(dname, "..")==0))
 					continue;
@@ -3781,7 +3781,7 @@
 			}
 
 			if(all_veto_files) {
-				SeekDir(dir_hnd,dirpos);
+				RewindDir(dir_hnd);
 				while ((dname = ReadDirName(dir_hnd,&dirpos))) {
 					pstring fullname;
 



More information about the samba-cvs mailing list