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

jra at samba.org jra at samba.org
Mon Nov 28 20:14:07 GMT 2005


Author: jra
Date: 2005-11-28 20:14:07 +0000 (Mon, 28 Nov 2005)
New Revision: 11945

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

Log:
Make us follow the newly documented pathname processing rules:
"As a special case for directories with large numbers of files, if the
case options are set as follows, "case sensitive = yes", "case
preserve = no", "short preserve case = no" then the "default case"
option will be applied and will modify all filenames sent from the client
when accessing this share."
This is needed as fixing the case preserve rules to only apply to
new filenames broke the large directory fix. Glad we caught this
before release. Thanks to jht for this one.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/smbd/filename.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/filename.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/filename.c	2005-11-28 17:03:52 UTC (rev 11944)
+++ branches/SAMBA_3_0/source/smbd/filename.c	2005-11-28 20:14:07 UTC (rev 11945)
@@ -150,6 +150,19 @@
 			pstrcpy(saved_last_component, name);
 	}
 
+	/*
+	 * Large directory fix normalization. If we're case sensitive, and
+	 * the case preserving parameters are set to "no", normalize the case of
+	 * the incoming filename from the client WHETHER IT EXISTS OR NOT !
+	 * This is in conflict with the current (3.0.20) man page, but is
+	 * what people expect from the "large directory howto". I'll update
+	 * the man page. Thanks to jht at samba.org for finding this. JRA.
+	 */
+
+	if (conn->case_sensitive && !conn->case_preserve && !conn->short_case_preserve) {
+		strnorm(name, lp_defaultcase(SNUM(conn)));
+	}
+	
 	start = name;
 	pstrcpy(orig_path, name);
 



More information about the samba-cvs mailing list