diff options
author | Jeremy Allison <jra@samba.org> | 2005-02-03 02:02:54 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:55:32 -0500 |
commit | 91ef89daa03551fa17ff78adb9f36420057948da (patch) | |
tree | c0ad7eecb05150e9c1e8052db354f15fe6e563a8 | |
parent | 4523bd1446dc411a29b82bdd13e564979b0d5d18 (diff) | |
download | samba-91ef89daa03551fa17ff78adb9f36420057948da.tar.gz samba-91ef89daa03551fa17ff78adb9f36420057948da.tar.bz2 samba-91ef89daa03551fa17ff78adb9f36420057948da.zip |
r5183: Ensure we correctly set the per-connection "case_sensitive" setting.
Rename dptrs_open to the more correct dirhandles_open.
Remove old #if 1.
Jeremy.
(This used to be commit c43bae306a18f5716acbe8571f4f414873400cb1)
-rw-r--r-- | source3/smbd/dir.c | 10 | ||||
-rw-r--r-- | source3/smbd/filename.c | 4 | ||||
-rw-r--r-- | source3/smbd/service.c | 27 |
3 files changed, 23 insertions, 18 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index e9934ff49c..fb1a700074 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -57,7 +57,7 @@ struct dptr_struct { static struct bitmap *dptr_bmap; static struct dptr_struct *dirptrs; -static int dptrs_open = 0; +static int dirhandles_open = 0; #define INVALID_DPTR_KEY (-3) @@ -135,7 +135,7 @@ static struct dptr_struct *dptr_get(int key, BOOL forclose) for(dptr = dirptrs; dptr; dptr = dptr->next) { if(dptr->dnum == key) { if (!forclose && !dptr->dir_hnd) { - if (dptrs_open >= MAX_OPEN_DIRECTORIES) + if (dirhandles_open >= MAX_OPEN_DIRECTORIES) dptr_idleoldest(); DEBUG(4,("dptr_get: Reopening dptr key %d\n",key)); if (!(dptr->dir_hnd = OpenDir(dptr->conn, dptr->path))) { @@ -385,7 +385,7 @@ int dptr_create(connection_struct *conn, pstring path, BOOL old_handle, BOOL exp string_set(&conn->dirpath,dir2); - if (dptrs_open >= MAX_OPEN_DIRECTORIES) + if (dirhandles_open >= MAX_OPEN_DIRECTORIES) dptr_idleoldest(); dptr = SMB_MALLOC_P(struct dptr_struct); @@ -968,7 +968,7 @@ struct smb_Dir *OpenDir(connection_struct *conn, const char *name) goto fail; } - dptrs_open++; + dirhandles_open++; return dirp; fail: @@ -1004,7 +1004,7 @@ int CloseDir(struct smb_Dir *dirp) } SAFE_FREE(dirp->name_cache); SAFE_FREE(dirp); - dptrs_open--; + dirhandles_open--; return ret; } diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c index c04b43b873..8c484dd232 100644 --- a/source3/smbd/filename.c +++ b/source3/smbd/filename.c @@ -150,11 +150,7 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen pstrcpy(saved_last_component, name); } -#if 1 if (!conn->case_preserve || (mangle_is_8_3(name, False) && !conn->short_case_preserve)) -#else - if (!conn->case_sensitive && (!conn->case_preserve || (mangle_is_8_3(name, False) && !conn->short_case_preserve))) -#endif strnorm(name, lp_defaultcase(SNUM(conn))); start = name; diff --git a/source3/smbd/service.c b/source3/smbd/service.c index 2e60adc636..f199fe3ade 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -60,17 +60,26 @@ BOOL set_current_service(connection_struct *conn, uint16 flags, BOOL do_chdir) last_flags = flags; /* Obey the client case sensitivity requests - only for clients that support it. */ - if (lp_casesensitive(snum) == Auto) { - /* We need this uglyness due to DOS/Win9x clients that lie about case insensitivity. */ - enum remote_arch_types ra_type = get_remote_arch(); - if ((ra_type != RA_SAMBA) && (ra_type != RA_CIFSFS)) { - /* Client can't support per-packet case sensitive pathnames. */ + switch (lp_casesensitive(snum)) { + case Auto: + { + /* We need this uglyness due to DOS/Win9x clients that lie about case insensitivity. */ + enum remote_arch_types ra_type = get_remote_arch(); + if ((ra_type != RA_SAMBA) && (ra_type != RA_CIFSFS)) { + /* Client can't support per-packet case sensitive pathnames. */ + conn->case_sensitive = False; + } else { + conn->case_sensitive = !(flags & FLAG_CASELESS_PATHNAMES); + } + } + break; + case True: + conn->case_sensitive = True; + break; + default: conn->case_sensitive = False; - } else { - conn->case_sensitive = !(flags & FLAG_CASELESS_PATHNAMES); - } + break; } - magic_char = lp_magicchar(snum); return(True); } |