[SCM] Samba Shared Repository - branch v3-4-test updated

Karolin Seeger kseeger at samba.org
Fri Oct 9 00:41:19 MDT 2009


The branch, v3-4-test has been updated
       via  37f42ad... Correct fix for bug 6781 - Cannot rename subfolders in Explorer view with recent versions of Samba. Without this fix, renaming a directory ./a to ./b, whilst a directory ./aa was already open would fail. Simplifies logic of earlier code. Jeremy.
      from  9f7d155... Fix bug 6769 - symlink unlink does nothing. Jeremy.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test


- Log -----------------------------------------------------------------
commit 37f42ad6a1fff1e43bfd6dcaa8244b738ea37363
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Oct 7 15:46:57 2009 -0700

    Correct fix for bug 6781 - Cannot rename subfolders in Explorer view with recent versions of Samba. Without this fix, renaming a directory ./a to ./b, whilst a directory ./aa was already open would fail. Simplifies logic of earlier code. Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/files.c |   32 ++++++++++++--------------------
 1 files changed, 12 insertions(+), 20 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/files.c b/source3/smbd/files.c
index 54c4c73..6f82686 100644
--- a/source3/smbd/files.c
+++ b/source3/smbd/files.c
@@ -385,13 +385,12 @@ bool file_find_subpath(files_struct *dir_fsp)
 {
 	files_struct *fsp;
 	size_t dlen;
-	bool ret = false;
 	char *d_fullname = talloc_asprintf(talloc_tos(),
 					"%s/%s",
 					dir_fsp->conn->connectpath,
 					dir_fsp->fsp_name);
 	if (!d_fullname) {
-		goto out;
+		return false;
 	}
 
 	dlen = strlen(d_fullname);
@@ -408,28 +407,21 @@ bool file_find_subpath(files_struct *dir_fsp)
 					fsp->conn->connectpath,
 					fsp->fsp_name);
 
-		if (strnequal(d_fullname, d1_fullname, dlen)) {
-			int d1_len = strlen(d1_fullname);
-
-			/*
-			 * If the open file is a second file handle to the
-			 * same name or is a stream on the original file, then
-			 * don't return true.
-			 */
-			if (d1_len == dlen || d1_fullname[dlen] == ':') {
-				TALLOC_FREE(d1_fullname);
-				continue;
-			}
-
+                /*
+		 * If the open file has a path that is a longer
+		 * component, then it's a subpath.
+		 */
+		if (strnequal(d_fullname, d1_fullname, dlen) &&
+				(d1_fullname[dlen] == '/')) {
 			TALLOC_FREE(d1_fullname);
-			ret = true;
-			goto out;
+			TALLOC_FREE(d_fullname);
+			return true;
 		}
 		TALLOC_FREE(d1_fullname);
-	} 
- out:
+	}
+
 	TALLOC_FREE(d_fullname);
-	return ret;
+	return false;
 }
 
 /****************************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list