mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
r570: Remove lots of globals to handle case issues - move them
to connection struct entries (as they should have been from the start). Jerry, once you've cut over to 3.0.4 release branch I'll add this to 3.0 also. - Jerry cut over :-). Jeremy.
This commit is contained in:
parent
f3efc098d1
commit
578a508509
@ -9,6 +9,6 @@ struct mangle_fns {
|
|||||||
BOOL (*is_8_3)(const char *fname, BOOL check_case, BOOL allow_wildcards);
|
BOOL (*is_8_3)(const char *fname, BOOL check_case, BOOL allow_wildcards);
|
||||||
void (*reset)(void);
|
void (*reset)(void);
|
||||||
BOOL (*check_cache)(char *s);
|
BOOL (*check_cache)(char *s);
|
||||||
void (*name_map)(char *OutName, BOOL need83, BOOL cache83);
|
void (*name_map)(char *OutName, BOOL need83, BOOL cache83, int default_case);
|
||||||
};
|
};
|
||||||
#endif /* _MANGLE_H_ */
|
#endif /* _MANGLE_H_ */
|
||||||
|
@ -503,6 +503,11 @@ typedef struct connection_struct
|
|||||||
time_t lastused;
|
time_t lastused;
|
||||||
BOOL used;
|
BOOL used;
|
||||||
int num_files_open;
|
int num_files_open;
|
||||||
|
|
||||||
|
BOOL case_sensitive;
|
||||||
|
BOOL case_preserve;
|
||||||
|
BOOL short_case_preserve;
|
||||||
|
|
||||||
name_compare_entry *hide_list; /* Per-share list of files to return as hidden. */
|
name_compare_entry *hide_list; /* Per-share list of files to return as hidden. */
|
||||||
name_compare_entry *veto_list; /* Per-share list of files to veto (never show). */
|
name_compare_entry *veto_list; /* Per-share list of files to veto (never show). */
|
||||||
name_compare_entry *veto_oplock_list; /* Per-share list of files to refuse oplocks on. */
|
name_compare_entry *veto_oplock_list; /* Per-share list of files to refuse oplocks on. */
|
||||||
|
@ -122,9 +122,9 @@
|
|||||||
#define MAP_HIDDEN(conn) ((conn) && lp_map_hidden((conn)->service))
|
#define MAP_HIDDEN(conn) ((conn) && lp_map_hidden((conn)->service))
|
||||||
#define MAP_SYSTEM(conn) ((conn) && lp_map_system((conn)->service))
|
#define MAP_SYSTEM(conn) ((conn) && lp_map_system((conn)->service))
|
||||||
#define MAP_ARCHIVE(conn) ((conn) && lp_map_archive((conn)->service))
|
#define MAP_ARCHIVE(conn) ((conn) && lp_map_archive((conn)->service))
|
||||||
#define IS_HIDDEN_PATH(conn,path) ((conn) && is_in_path((path),(conn)->hide_list))
|
#define IS_HIDDEN_PATH(conn,path) ((conn) && is_in_path((path),(conn)->hide_list,(conn)->case_sensitive))
|
||||||
#define IS_VETO_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_list))
|
#define IS_VETO_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_list,(conn)->case_sensitive))
|
||||||
#define IS_VETO_OPLOCK_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_oplock_list))
|
#define IS_VETO_OPLOCK_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_oplock_list,(conn)->case_sensitive))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Used by the stat cache code to check if a returned
|
* Used by the stat cache code to check if a returned
|
||||||
|
@ -63,19 +63,6 @@ int chain_size = 0;
|
|||||||
|
|
||||||
int trans_num = 0;
|
int trans_num = 0;
|
||||||
|
|
||||||
/*
|
|
||||||
case handling on filenames
|
|
||||||
*/
|
|
||||||
int case_default = CASE_LOWER;
|
|
||||||
|
|
||||||
/* the following control case operations - they are put here so the
|
|
||||||
client can link easily */
|
|
||||||
BOOL case_sensitive;
|
|
||||||
BOOL case_preserve;
|
|
||||||
BOOL use_mangled_map = False;
|
|
||||||
BOOL short_case_preserve;
|
|
||||||
BOOL case_mangle;
|
|
||||||
|
|
||||||
static enum remote_arch_types ra_type = RA_UNKNOWN;
|
static enum remote_arch_types ra_type = RA_UNKNOWN;
|
||||||
pstring user_socket_options=DEFAULT_SOCKET_OPTIONS;
|
pstring user_socket_options=DEFAULT_SOCKET_OPTIONS;
|
||||||
|
|
||||||
@ -609,7 +596,7 @@ void unix_clean_name(char *s)
|
|||||||
Make a dir struct.
|
Make a dir struct.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void make_dir_struct(char *buf, const char *mask, const char *fname,SMB_OFF_T size,int mode,time_t date)
|
void make_dir_struct(char *buf, const char *mask, const char *fname,SMB_OFF_T size,int mode,time_t date, BOOL case_sensitive)
|
||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
pstring mask2;
|
pstring mask2;
|
||||||
@ -1500,7 +1487,7 @@ const char *readdirname(DIR *p)
|
|||||||
of a path matches a (possibly wildcarded) entry in a namelist.
|
of a path matches a (possibly wildcarded) entry in a namelist.
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
BOOL is_in_path(const char *name, name_compare_entry *namelist)
|
BOOL is_in_path(const char *name, name_compare_entry *namelist, BOOL case_sensitive)
|
||||||
{
|
{
|
||||||
pstring last_component;
|
pstring last_component;
|
||||||
char *p;
|
char *p;
|
||||||
|
@ -334,9 +334,8 @@ char *strupper_static(const char *s)
|
|||||||
Convert a string to "normal" form.
|
Convert a string to "normal" form.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
void strnorm(char *s)
|
void strnorm(char *s, int case_default)
|
||||||
{
|
{
|
||||||
extern int case_default;
|
|
||||||
if (case_default == CASE_UPPER)
|
if (case_default == CASE_UPPER)
|
||||||
strupper_m(s);
|
strupper_m(s);
|
||||||
else
|
else
|
||||||
@ -347,9 +346,8 @@ void strnorm(char *s)
|
|||||||
Check if a string is in "normal" case.
|
Check if a string is in "normal" case.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
BOOL strisnormal(const char *s)
|
BOOL strisnormal(const char *s, int case_default)
|
||||||
{
|
{
|
||||||
extern int case_default;
|
|
||||||
if (case_default == CASE_UPPER)
|
if (case_default == CASE_UPPER)
|
||||||
return(!strhaslower(s));
|
return(!strhaslower(s));
|
||||||
|
|
||||||
|
@ -506,13 +506,13 @@ BOOL strupper_w(smb_ucs2_t *s)
|
|||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
convert a string to "normal" form
|
convert a string to "normal" form
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
void strnorm_w(smb_ucs2_t *s)
|
|
||||||
|
void strnorm_w(smb_ucs2_t *s, int case_default)
|
||||||
{
|
{
|
||||||
extern int case_default;
|
if (case_default == CASE_UPPER)
|
||||||
if (case_default == CASE_UPPER)
|
strupper_w(s);
|
||||||
strupper_w(s);
|
else
|
||||||
else
|
strlower_w(s);
|
||||||
strlower_w(s);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int strcmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b)
|
int strcmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b)
|
||||||
|
@ -365,7 +365,6 @@ typedef struct
|
|||||||
BOOL bCaseSensitive;
|
BOOL bCaseSensitive;
|
||||||
BOOL bCasePreserve;
|
BOOL bCasePreserve;
|
||||||
BOOL bShortCasePreserve;
|
BOOL bShortCasePreserve;
|
||||||
BOOL bCaseMangle;
|
|
||||||
BOOL bHideDotFiles;
|
BOOL bHideDotFiles;
|
||||||
BOOL bHideSpecialFiles;
|
BOOL bHideSpecialFiles;
|
||||||
BOOL bHideUnReadable;
|
BOOL bHideUnReadable;
|
||||||
@ -489,7 +488,6 @@ static service sDefault = {
|
|||||||
False, /* case sensitive */
|
False, /* case sensitive */
|
||||||
True, /* case preserve */
|
True, /* case preserve */
|
||||||
True, /* short case preserve */
|
True, /* short case preserve */
|
||||||
False, /* case mangle */
|
|
||||||
True, /* bHideDotFiles */
|
True, /* bHideDotFiles */
|
||||||
False, /* bHideSpecialFiles */
|
False, /* bHideSpecialFiles */
|
||||||
False, /* bHideUnReadable */
|
False, /* bHideUnReadable */
|
||||||
@ -982,7 +980,6 @@ static struct parm_struct parm_table[] = {
|
|||||||
{"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_HIDE},
|
{"casesignames", P_BOOL, P_LOCAL, &sDefault.bCaseSensitive, NULL, NULL, FLAG_HIDE},
|
||||||
{"preserve case", P_BOOL, P_LOCAL, &sDefault.bCasePreserve, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
{"preserve case", P_BOOL, P_LOCAL, &sDefault.bCasePreserve, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
||||||
{"short preserve case", P_BOOL, P_LOCAL, &sDefault.bShortCasePreserve, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
{"short preserve case", P_BOOL, P_LOCAL, &sDefault.bShortCasePreserve, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
||||||
{"mangle case", P_BOOL, P_LOCAL, &sDefault.bCaseMangle, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
|
||||||
{"mangling char", P_CHAR, P_LOCAL, &sDefault.magic_char, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
{"mangling char", P_CHAR, P_LOCAL, &sDefault.magic_char, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
||||||
{"hide dot files", P_BOOL, P_LOCAL, &sDefault.bHideDotFiles, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
{"hide dot files", P_BOOL, P_LOCAL, &sDefault.bHideDotFiles, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
||||||
{"hide special files", P_BOOL, P_LOCAL, &sDefault.bHideSpecialFiles, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
{"hide special files", P_BOOL, P_LOCAL, &sDefault.bHideSpecialFiles, NULL, NULL, FLAG_ADVANCED | FLAG_SHARE | FLAG_GLOBAL},
|
||||||
@ -1833,7 +1830,6 @@ FN_LOCAL_BOOL(lp_rootpreexec_close, bRootpreexecClose)
|
|||||||
FN_LOCAL_BOOL(lp_casesensitive, bCaseSensitive)
|
FN_LOCAL_BOOL(lp_casesensitive, bCaseSensitive)
|
||||||
FN_LOCAL_BOOL(lp_preservecase, bCasePreserve)
|
FN_LOCAL_BOOL(lp_preservecase, bCasePreserve)
|
||||||
FN_LOCAL_BOOL(lp_shortpreservecase, bShortCasePreserve)
|
FN_LOCAL_BOOL(lp_shortpreservecase, bShortCasePreserve)
|
||||||
FN_LOCAL_BOOL(lp_casemangle, bCaseMangle)
|
|
||||||
FN_LOCAL_BOOL(lp_hide_dot_files, bHideDotFiles)
|
FN_LOCAL_BOOL(lp_hide_dot_files, bHideDotFiles)
|
||||||
FN_LOCAL_BOOL(lp_hide_special_files, bHideSpecialFiles)
|
FN_LOCAL_BOOL(lp_hide_special_files, bHideSpecialFiles)
|
||||||
FN_LOCAL_BOOL(lp_hideunreadable, bHideUnReadable)
|
FN_LOCAL_BOOL(lp_hideunreadable, bHideUnReadable)
|
||||||
|
@ -26,11 +26,6 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
extern BOOL case_sensitive;
|
|
||||||
extern BOOL case_preserve;
|
|
||||||
extern BOOL short_case_preserve;
|
|
||||||
extern BOOL use_mangled_map;
|
|
||||||
|
|
||||||
static BOOL scan_directory(const char *path, char *name,size_t maxlength,
|
static BOOL scan_directory(const char *path, char *name,size_t maxlength,
|
||||||
connection_struct *conn,BOOL docache);
|
connection_struct *conn,BOOL docache);
|
||||||
|
|
||||||
@ -39,7 +34,7 @@ static BOOL scan_directory(const char *path, char *name,size_t maxlength,
|
|||||||
This needs to be careful about whether we are case sensitive.
|
This needs to be careful about whether we are case sensitive.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static BOOL fname_equal(const char *name1, const char *name2)
|
static BOOL fname_equal(const char *name1, const char *name2, BOOL case_sensitive)
|
||||||
{
|
{
|
||||||
/* Normal filename handling */
|
/* Normal filename handling */
|
||||||
if (case_sensitive)
|
if (case_sensitive)
|
||||||
@ -152,13 +147,17 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen
|
|||||||
pstrcpy(saved_last_component, name);
|
pstrcpy(saved_last_component, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!case_sensitive && (!case_preserve || (mangle_is_8_3(name, False) && !short_case_preserve)))
|
#if 1
|
||||||
strnorm(name);
|
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;
|
start = name;
|
||||||
pstrcpy(orig_path, name);
|
pstrcpy(orig_path, name);
|
||||||
|
|
||||||
if(!case_sensitive && stat_cache_lookup(conn, name, dirpath, &start, &st)) {
|
if(!conn->case_sensitive && stat_cache_lookup(conn, name, dirpath, &start, &st)) {
|
||||||
*pst = st;
|
*pst = st;
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
@ -168,7 +167,7 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (SMB_VFS_STAT(conn,name,&st) == 0) {
|
if (SMB_VFS_STAT(conn,name,&st) == 0) {
|
||||||
stat_cache_add(orig_path, name);
|
stat_cache_add(orig_path, name, conn->case_sensitive);
|
||||||
DEBUG(5,("conversion finished %s -> %s\n",orig_path, name));
|
DEBUG(5,("conversion finished %s -> %s\n",orig_path, name));
|
||||||
*pst = st;
|
*pst = st;
|
||||||
return(True);
|
return(True);
|
||||||
@ -181,7 +180,7 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen
|
|||||||
* sensitive then searching won't help.
|
* sensitive then searching won't help.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (case_sensitive && !mangle_is_mangled(name) && !use_mangled_map)
|
if (conn->case_sensitive && !mangle_is_mangled(name) && !*lp_mangled_map(SNUM(conn)))
|
||||||
return(False);
|
return(False);
|
||||||
|
|
||||||
name_has_wildcard = ms_has_wild(start);
|
name_has_wildcard = ms_has_wild(start);
|
||||||
@ -297,8 +296,8 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen
|
|||||||
* don't normalise it.
|
* don't normalise it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!case_preserve && (!strhasupper(start) || !strhaslower(start)))
|
if (!conn->case_preserve && (!strhasupper(start) || !strhaslower(start)))
|
||||||
strnorm(start);
|
strnorm(start, lp_defaultcase(SNUM(conn)));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check on the mangled stack to see if we can recover the
|
* check on the mangled stack to see if we can recover the
|
||||||
@ -353,7 +352,7 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if(!component_was_mangled && !name_has_wildcard)
|
if(!component_was_mangled && !name_has_wildcard)
|
||||||
stat_cache_add(orig_path, dirpath);
|
stat_cache_add(orig_path, dirpath, conn->case_sensitive);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Restore the / that we wiped out earlier.
|
* Restore the / that we wiped out earlier.
|
||||||
@ -368,7 +367,7 @@ BOOL unix_convert(pstring name,connection_struct *conn,char *saved_last_componen
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if(!component_was_mangled && !name_has_wildcard)
|
if(!component_was_mangled && !name_has_wildcard)
|
||||||
stat_cache_add(orig_path, name);
|
stat_cache_add(orig_path, name, conn->case_sensitive);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The name has been resolved.
|
* The name has been resolved.
|
||||||
@ -482,7 +481,7 @@ static BOOL scan_directory(const char *path, char *name, size_t maxlength,
|
|||||||
* against unmangled name.
|
* against unmangled name.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((mangled && mangled_equal(name,dname,SNUM(conn))) || fname_equal(name, dname)) {
|
if ((mangled && mangled_equal(name,dname,SNUM(conn))) || fname_equal(name, dname, conn->case_sensitive)) {
|
||||||
/* we've found the file, change it's name and return */
|
/* we've found the file, change it's name and return */
|
||||||
if (docache)
|
if (docache)
|
||||||
DirCacheAdd(path,name,dname,SNUM(conn));
|
DirCacheAdd(path,name,dname,SNUM(conn));
|
||||||
|
@ -120,5 +120,5 @@ void mangle_map(pstring OutName, BOOL need83, BOOL cache83, int snum)
|
|||||||
|
|
||||||
/* invoke the inane "mangled map" code */
|
/* invoke the inane "mangled map" code */
|
||||||
mangle_map_filename(OutName, snum);
|
mangle_map_filename(OutName, snum);
|
||||||
mangle_fns->name_map(OutName, need83, cache83);
|
mangle_fns->name_map(OutName, need83, cache83, lp_defaultcase(snum));
|
||||||
}
|
}
|
||||||
|
@ -50,13 +50,6 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- **
|
|
||||||
* External Variables...
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern int case_default; /* Are conforming 8.3 names all upper or lower? */
|
|
||||||
extern BOOL case_mangle; /* If true, all chars in 8.3 should be same case. */
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- **
|
/* -------------------------------------------------------------------------- **
|
||||||
* Other stuff...
|
* Other stuff...
|
||||||
*
|
*
|
||||||
@ -130,13 +123,6 @@ static BOOL mc_initialized = False;
|
|||||||
#define MANGLED_CACHE_MAX_ENTRIES 1024
|
#define MANGLED_CACHE_MAX_ENTRIES 1024
|
||||||
#define MANGLED_CACHE_MAX_MEMORY 0
|
#define MANGLED_CACHE_MAX_MEMORY 0
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- **
|
|
||||||
* External Variables...
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern int case_default; /* Are conforming 8.3 names all upper or lower? */
|
|
||||||
extern BOOL case_mangle; /* If true, all chars in 8.3 should be same case. */
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
static NTSTATUS has_valid_83_chars(const smb_ucs2_t *s, BOOL allow_wildcards)
|
static NTSTATUS has_valid_83_chars(const smb_ucs2_t *s, BOOL allow_wildcards)
|
||||||
@ -639,7 +625,7 @@ static BOOL check_cache( char *s )
|
|||||||
* the buffer must be able to hold 13 characters (including the null)
|
* the buffer must be able to hold 13 characters (including the null)
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
*/
|
*/
|
||||||
static void to_8_3(char *s)
|
static void to_8_3(char *s, int default_case)
|
||||||
{
|
{
|
||||||
int csum;
|
int csum;
|
||||||
char *p;
|
char *p;
|
||||||
@ -653,7 +639,7 @@ static void to_8_3(char *s)
|
|||||||
|
|
||||||
p = strrchr(s,'.');
|
p = strrchr(s,'.');
|
||||||
if( p && (strlen(p+1) < (size_t)4) ) {
|
if( p && (strlen(p+1) < (size_t)4) ) {
|
||||||
BOOL all_normal = ( strisnormal(p+1) ); /* XXXXXXXXX */
|
BOOL all_normal = ( strisnormal(p+1, default_case) ); /* XXXXXXXXX */
|
||||||
|
|
||||||
if( all_normal && p[1] != 0 ) {
|
if( all_normal && p[1] != 0 ) {
|
||||||
*p = 0;
|
*p = 0;
|
||||||
@ -728,7 +714,7 @@ static void to_8_3(char *s)
|
|||||||
* ****************************************************************************
|
* ****************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void name_map(char *OutName, BOOL need83, BOOL cache83)
|
static void name_map(char *OutName, BOOL need83, BOOL cache83, int default_case)
|
||||||
{
|
{
|
||||||
smb_ucs2_t *OutName_ucs2;
|
smb_ucs2_t *OutName_ucs2;
|
||||||
DEBUG(5,("name_map( %s, need83 = %s, cache83 = %s)\n", OutName,
|
DEBUG(5,("name_map( %s, need83 = %s, cache83 = %s)\n", OutName,
|
||||||
@ -750,7 +736,7 @@ static void name_map(char *OutName, BOOL need83, BOOL cache83)
|
|||||||
if (cache83)
|
if (cache83)
|
||||||
tmp = strdup(OutName);
|
tmp = strdup(OutName);
|
||||||
|
|
||||||
to_8_3(OutName);
|
to_8_3(OutName, default_case);
|
||||||
|
|
||||||
if(tmp != NULL) {
|
if(tmp != NULL) {
|
||||||
cache_mangled_name(OutName, tmp);
|
cache_mangled_name(OutName, tmp);
|
||||||
|
@ -501,7 +501,7 @@ static BOOL is_legal_name(const char *name)
|
|||||||
|
|
||||||
the name parameter must be able to hold 13 bytes
|
the name parameter must be able to hold 13 bytes
|
||||||
*/
|
*/
|
||||||
static void name_map(fstring name, BOOL need83, BOOL cache83)
|
static void name_map(fstring name, BOOL need83, BOOL cache83, int default_case)
|
||||||
{
|
{
|
||||||
char *dot_p;
|
char *dot_p;
|
||||||
char lead_chars[7];
|
char lead_chars[7];
|
||||||
|
@ -24,9 +24,6 @@
|
|||||||
extern int Protocol;
|
extern int Protocol;
|
||||||
extern int smb_read_error;
|
extern int smb_read_error;
|
||||||
extern int global_oplock_break;
|
extern int global_oplock_break;
|
||||||
extern BOOL case_sensitive;
|
|
||||||
extern BOOL case_preserve;
|
|
||||||
extern BOOL short_case_preserve;
|
|
||||||
extern struct current_user current_user;
|
extern struct current_user current_user;
|
||||||
|
|
||||||
static const char *known_nt_pipes[] = {
|
static const char *known_nt_pipes[] = {
|
||||||
@ -274,33 +271,33 @@ static BOOL saved_short_case_preserve;
|
|||||||
Save case semantics.
|
Save case semantics.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void set_posix_case_semantics(uint32 file_attributes)
|
static void set_posix_case_semantics(connection_struct *conn, uint32 file_attributes)
|
||||||
{
|
{
|
||||||
if(!(file_attributes & FILE_FLAG_POSIX_SEMANTICS))
|
if(!(file_attributes & FILE_FLAG_POSIX_SEMANTICS))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
saved_case_sensitive = case_sensitive;
|
saved_case_sensitive = conn->case_sensitive;
|
||||||
saved_case_preserve = case_preserve;
|
saved_case_preserve = conn->case_preserve;
|
||||||
saved_short_case_preserve = short_case_preserve;
|
saved_short_case_preserve = conn->short_case_preserve;
|
||||||
|
|
||||||
/* Set to POSIX. */
|
/* Set to POSIX. */
|
||||||
case_sensitive = True;
|
conn->case_sensitive = True;
|
||||||
case_preserve = True;
|
conn->case_preserve = True;
|
||||||
short_case_preserve = True;
|
conn->short_case_preserve = True;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
Restore case semantics.
|
Restore case semantics.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void restore_case_semantics(uint32 file_attributes)
|
static void restore_case_semantics(connection_struct *conn, uint32 file_attributes)
|
||||||
{
|
{
|
||||||
if(!(file_attributes & FILE_FLAG_POSIX_SEMANTICS))
|
if(!(file_attributes & FILE_FLAG_POSIX_SEMANTICS))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case_sensitive = saved_case_sensitive;
|
conn->case_sensitive = saved_case_sensitive;
|
||||||
case_preserve = saved_case_preserve;
|
conn->case_preserve = saved_case_preserve;
|
||||||
short_case_preserve = saved_short_case_preserve;
|
conn->short_case_preserve = saved_short_case_preserve;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -762,7 +759,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
|
|||||||
* Check if POSIX semantics are wanted.
|
* Check if POSIX semantics are wanted.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
set_posix_case_semantics(file_attributes);
|
set_posix_case_semantics(conn, file_attributes);
|
||||||
|
|
||||||
unix_convert(fname,conn,0,&bad_path,&sbuf);
|
unix_convert(fname,conn,0,&bad_path,&sbuf);
|
||||||
|
|
||||||
@ -781,7 +778,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
|
|||||||
|
|
||||||
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
||||||
|
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
|
|
||||||
if(!fsp) {
|
if(!fsp) {
|
||||||
END_PROFILE(SMBntcreateX);
|
END_PROFILE(SMBntcreateX);
|
||||||
@ -847,7 +844,7 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (create_options & FILE_NON_DIRECTORY_FILE) {
|
if (create_options & FILE_NON_DIRECTORY_FILE) {
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
SSVAL(outbuf, smb_flg2,
|
SSVAL(outbuf, smb_flg2,
|
||||||
SVAL(outbuf,smb_flg2) | FLAGS2_32_BIT_ERROR_CODES);
|
SVAL(outbuf,smb_flg2) | FLAGS2_32_BIT_ERROR_CODES);
|
||||||
END_PROFILE(SMBntcreateX);
|
END_PROFILE(SMBntcreateX);
|
||||||
@ -858,20 +855,20 @@ create_options = 0x%x root_dir_fid = 0x%x\n", flags, desired_access, file_attrib
|
|||||||
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
||||||
|
|
||||||
if(!fsp) {
|
if(!fsp) {
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
END_PROFILE(SMBntcreateX);
|
END_PROFILE(SMBntcreateX);
|
||||||
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
END_PROFILE(SMBntcreateX);
|
END_PROFILE(SMBntcreateX);
|
||||||
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
|
|
||||||
file_len = sbuf.st_size;
|
file_len = sbuf.st_size;
|
||||||
fmode = dos_mode(conn,fname,&sbuf);
|
fmode = dos_mode(conn,fname,&sbuf);
|
||||||
@ -1285,7 +1282,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
|
|||||||
* Check if POSIX semantics are wanted.
|
* Check if POSIX semantics are wanted.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
set_posix_case_semantics(file_attributes);
|
set_posix_case_semantics(conn, file_attributes);
|
||||||
|
|
||||||
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
|
||||||
|
|
||||||
@ -1313,7 +1310,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
|
|||||||
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
||||||
|
|
||||||
if(!fsp) {
|
if(!fsp) {
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1336,7 +1333,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (create_options & FILE_NON_DIRECTORY_FILE) {
|
if (create_options & FILE_NON_DIRECTORY_FILE) {
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
SSVAL(outbuf, smb_flg2, SVAL(outbuf,smb_flg2) | FLAGS2_32_BIT_ERROR_CODES);
|
SSVAL(outbuf, smb_flg2, SVAL(outbuf,smb_flg2) | FLAGS2_32_BIT_ERROR_CODES);
|
||||||
return ERROR_NT(NT_STATUS_FILE_IS_A_DIRECTORY);
|
return ERROR_NT(NT_STATUS_FILE_IS_A_DIRECTORY);
|
||||||
}
|
}
|
||||||
@ -1345,11 +1342,11 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
|
|||||||
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
fsp = open_directory(conn, fname, &sbuf, desired_access, smb_open_mode, smb_ofun, &smb_action);
|
||||||
|
|
||||||
if(!fsp) {
|
if(!fsp) {
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
return set_bad_path_error(errno, bad_path, outbuf, ERRDOS,ERRnoaccess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1361,7 +1358,7 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
|
|||||||
|
|
||||||
if (fmode & aDIR) {
|
if (fmode & aDIR) {
|
||||||
close_file(fsp,False);
|
close_file(fsp,False);
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
return ERROR_DOS(ERRDOS,ERRnoaccess);
|
return ERROR_DOS(ERRDOS,ERRnoaccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1384,11 +1381,11 @@ static int call_nt_transact_create(connection_struct *conn, char *inbuf, char *o
|
|||||||
|
|
||||||
if (sd_len && !NT_STATUS_IS_OK(status = set_sd( fsp, data, sd_len, ALL_SECURITY_INFORMATION))) {
|
if (sd_len && !NT_STATUS_IS_OK(status = set_sd( fsp, data, sd_len, ALL_SECURITY_INFORMATION))) {
|
||||||
close_file(fsp,False);
|
close_file(fsp,False);
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
return ERROR_NT(status);
|
return ERROR_NT(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
restore_case_semantics(file_attributes);
|
restore_case_semantics(conn, file_attributes);
|
||||||
|
|
||||||
/* Save the requested allocation size. */
|
/* Save the requested allocation size. */
|
||||||
allocation_size = (SMB_BIG_UINT)IVAL(params,12);
|
allocation_size = (SMB_BIG_UINT)IVAL(params,12);
|
||||||
|
@ -31,9 +31,6 @@ extern int Protocol;
|
|||||||
extern int max_send;
|
extern int max_send;
|
||||||
extern int max_recv;
|
extern int max_recv;
|
||||||
extern char magic_char;
|
extern char magic_char;
|
||||||
extern BOOL case_sensitive;
|
|
||||||
extern BOOL case_preserve;
|
|
||||||
extern BOOL short_case_preserve;
|
|
||||||
extern int global_oplock_break;
|
extern int global_oplock_break;
|
||||||
unsigned int smb_echo_count = 0;
|
unsigned int smb_echo_count = 0;
|
||||||
|
|
||||||
@ -881,7 +878,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
|
|||||||
if (ok) {
|
if (ok) {
|
||||||
if ((dirtype&0x1F) == aVOLID) {
|
if ((dirtype&0x1F) == aVOLID) {
|
||||||
memcpy(p,status,21);
|
memcpy(p,status,21);
|
||||||
make_dir_struct(p,"???????????",volume_label(SNUM(conn)),0,aVOLID,0);
|
make_dir_struct(p,"???????????",volume_label(SNUM(conn)),0,aVOLID,0,conn->case_sensitive);
|
||||||
dptr_fill(p+12,dptr_num);
|
dptr_fill(p+12,dptr_num);
|
||||||
if (dptr_zero(p+12) && (status_len==0))
|
if (dptr_zero(p+12) && (status_len==0))
|
||||||
numentries = 1;
|
numentries = 1;
|
||||||
@ -901,7 +898,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
|
|||||||
finished = !get_dir_entry(conn,mask,dirtype,fname,&size,&mode,&date,check_descend);
|
finished = !get_dir_entry(conn,mask,dirtype,fname,&size,&mode,&date,check_descend);
|
||||||
if (!finished) {
|
if (!finished) {
|
||||||
memcpy(p,status,21);
|
memcpy(p,status,21);
|
||||||
make_dir_struct(p,mask,fname,size,mode,date);
|
make_dir_struct(p,mask,fname,size,mode,date,conn->case_sensitive);
|
||||||
dptr_fill(p+12,dptr_num);
|
dptr_fill(p+12,dptr_num);
|
||||||
numentries++;
|
numentries++;
|
||||||
}
|
}
|
||||||
@ -1570,7 +1567,7 @@ NTSTATUS unlink_internals(connection_struct *conn, int dirtype, char *name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!mask_match(fname, mask, case_sensitive))
|
if(!mask_match(fname, mask, conn->case_sensitive))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (sys_direntry) {
|
if (sys_direntry) {
|
||||||
@ -3515,7 +3512,7 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, files_struct *fsp, char *
|
|||||||
* filename).
|
* filename).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if((case_sensitive == False) && (case_preserve == True) &&
|
if((conn->case_sensitive == False) && (conn->case_preserve == True) &&
|
||||||
strequal(newname, fsp->fsp_name)) {
|
strequal(newname, fsp->fsp_name)) {
|
||||||
char *p;
|
char *p;
|
||||||
pstring newname_modified_last_component;
|
pstring newname_modified_last_component;
|
||||||
@ -3689,7 +3686,7 @@ NTSTATUS rename_internals(connection_struct *conn, char *name, char *newname, ui
|
|||||||
|
|
||||||
DEBUG(3,("rename_internals: case_sensitive = %d, case_preserve = %d, short case preserve = %d, \
|
DEBUG(3,("rename_internals: case_sensitive = %d, case_preserve = %d, short case preserve = %d, \
|
||||||
directory = %s, newname = %s, last_component_dest = %s, is_8_3 = %d\n",
|
directory = %s, newname = %s, last_component_dest = %s, is_8_3 = %d\n",
|
||||||
case_sensitive, case_preserve, short_case_preserve, directory,
|
conn->case_sensitive, conn->case_preserve, conn->short_case_preserve, directory,
|
||||||
newname, last_component_dest, is_short_name));
|
newname, last_component_dest, is_short_name));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3700,10 +3697,10 @@ directory = %s, newname = %s, last_component_dest = %s, is_8_3 = %d\n",
|
|||||||
* the rename (user is trying to change the case of the
|
* the rename (user is trying to change the case of the
|
||||||
* filename).
|
* filename).
|
||||||
*/
|
*/
|
||||||
if((case_sensitive == False) &&
|
if((conn->case_sensitive == False) &&
|
||||||
(((case_preserve == True) &&
|
(((conn->case_preserve == True) &&
|
||||||
(is_short_name == False)) ||
|
(is_short_name == False)) ||
|
||||||
((short_case_preserve == True) &&
|
((conn->short_case_preserve == True) &&
|
||||||
(is_short_name == True))) &&
|
(is_short_name == True))) &&
|
||||||
strcsequal(directory, newname)) {
|
strcsequal(directory, newname)) {
|
||||||
pstring modified_last_component;
|
pstring modified_last_component;
|
||||||
@ -3839,7 +3836,7 @@ directory = %s, newname = %s, last_component_dest = %s, is_8_3 = %d\n",
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!mask_match(fname, mask, case_sensitive))
|
if(!mask_match(fname, mask, conn->case_sensitive))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (sysdir_entry) {
|
if (sysdir_entry) {
|
||||||
@ -4172,7 +4169,7 @@ int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
|
|||||||
pstring fname;
|
pstring fname;
|
||||||
pstrcpy(fname,dname);
|
pstrcpy(fname,dname);
|
||||||
|
|
||||||
if(!mask_match(fname, mask, case_sensitive))
|
if(!mask_match(fname, mask, conn->case_sensitive))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
error = ERRnoaccess;
|
error = ERRnoaccess;
|
||||||
|
@ -21,12 +21,6 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
extern struct timeval smb_last_time;
|
extern struct timeval smb_last_time;
|
||||||
extern int case_default;
|
|
||||||
extern BOOL case_preserve;
|
|
||||||
extern BOOL short_case_preserve;
|
|
||||||
extern BOOL case_mangle;
|
|
||||||
extern BOOL case_sensitive;
|
|
||||||
extern BOOL use_mangled_map;
|
|
||||||
extern userdom_struct current_user_info;
|
extern userdom_struct current_user_info;
|
||||||
|
|
||||||
|
|
||||||
@ -62,13 +56,7 @@ BOOL set_current_service(connection_struct *conn,BOOL do_chdir)
|
|||||||
|
|
||||||
last_conn = conn;
|
last_conn = conn;
|
||||||
|
|
||||||
case_default = lp_defaultcase(snum);
|
|
||||||
case_preserve = lp_preservecase(snum);
|
|
||||||
short_case_preserve = lp_shortpreservecase(snum);
|
|
||||||
case_mangle = lp_casemangle(snum);
|
|
||||||
case_sensitive = lp_casesensitive(snum);
|
|
||||||
magic_char = lp_magicchar(snum);
|
magic_char = lp_magicchar(snum);
|
||||||
use_mangled_map = (*lp_mangled_map(snum) ? True:False);
|
|
||||||
return(True);
|
return(True);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,6 +345,12 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
|
|||||||
conn->printer = (strncmp(dev,"LPT",3) == 0);
|
conn->printer = (strncmp(dev,"LPT",3) == 0);
|
||||||
conn->ipc = ((strncmp(dev,"IPC",3) == 0) || strequal(dev,"ADMIN$"));
|
conn->ipc = ((strncmp(dev,"IPC",3) == 0) || strequal(dev,"ADMIN$"));
|
||||||
conn->dirptr = NULL;
|
conn->dirptr = NULL;
|
||||||
|
|
||||||
|
/* Case options for the share. */
|
||||||
|
conn->case_sensitive = lp_casesensitive(snum);
|
||||||
|
conn->case_preserve = lp_preservecase(snum);
|
||||||
|
conn->short_case_preserve = lp_shortpreservecase(snum);
|
||||||
|
|
||||||
conn->veto_list = NULL;
|
conn->veto_list = NULL;
|
||||||
conn->hide_list = NULL;
|
conn->hide_list = NULL;
|
||||||
conn->veto_oplock_list = NULL;
|
conn->veto_oplock_list = NULL;
|
||||||
|
@ -22,8 +22,6 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
extern BOOL case_sensitive;
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
Stat cache code used in unix_convert.
|
Stat cache code used in unix_convert.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
@ -50,7 +48,7 @@ static hash_table stat_cache;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void stat_cache_add( const char *full_orig_name, const char *orig_translated_path)
|
void stat_cache_add( const char *full_orig_name, const char *orig_translated_path, BOOL case_sensitive)
|
||||||
{
|
{
|
||||||
stat_cache_entry *scp;
|
stat_cache_entry *scp;
|
||||||
stat_cache_entry *found_scp;
|
stat_cache_entry *found_scp;
|
||||||
@ -222,7 +220,7 @@ BOOL stat_cache_lookup(connection_struct *conn, pstring name, pstring dirpath,
|
|||||||
(name[1] == '.' && name[1] == '\0'))))
|
(name[1] == '.' && name[1] == '\0'))))
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
if (case_sensitive) {
|
if (conn->case_sensitive) {
|
||||||
chk_name = strdup(name);
|
chk_name = strdup(name);
|
||||||
if (!chk_name) {
|
if (!chk_name) {
|
||||||
DEBUG(0, ("stat_cache_lookup: strdup failed!\n"));
|
DEBUG(0, ("stat_cache_lookup: strdup failed!\n"));
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
extern int Protocol;
|
extern int Protocol;
|
||||||
extern BOOL case_sensitive;
|
|
||||||
extern int smb_read_error;
|
extern int smb_read_error;
|
||||||
extern fstring local_machine;
|
extern fstring local_machine;
|
||||||
extern int global_oplock_break;
|
extern int global_oplock_break;
|
||||||
@ -883,8 +882,8 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
|
|||||||
|
|
||||||
pstrcpy(fname,dname);
|
pstrcpy(fname,dname);
|
||||||
|
|
||||||
if(!(got_match = *got_exact_match = exact_match(fname, mask, case_sensitive)))
|
if(!(got_match = *got_exact_match = exact_match(fname, mask, conn->case_sensitive)))
|
||||||
got_match = mask_match(fname, mask, case_sensitive);
|
got_match = mask_match(fname, mask, conn->case_sensitive);
|
||||||
|
|
||||||
if(!got_match && !mangle_is_8_3(fname, False)) {
|
if(!got_match && !mangle_is_8_3(fname, False)) {
|
||||||
|
|
||||||
@ -898,8 +897,8 @@ static BOOL get_lanman2_dir_entry(connection_struct *conn,
|
|||||||
pstring newname;
|
pstring newname;
|
||||||
pstrcpy( newname, fname);
|
pstrcpy( newname, fname);
|
||||||
mangle_map( newname, True, False, SNUM(conn));
|
mangle_map( newname, True, False, SNUM(conn));
|
||||||
if(!(got_match = *got_exact_match = exact_match(newname, mask, case_sensitive)))
|
if(!(got_match = *got_exact_match = exact_match(newname, mask, conn->case_sensitive)))
|
||||||
got_match = mask_match(newname, mask, case_sensitive);
|
got_match = mask_match(newname, mask, conn->case_sensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(got_match) {
|
if(got_match) {
|
||||||
@ -1433,7 +1432,7 @@ close_if_end = %d requires_resume_key = %d level = 0x%x, max_data_bytes = %d\n",
|
|||||||
a different TRANS2 call. */
|
a different TRANS2 call. */
|
||||||
|
|
||||||
DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n", conn->dirpath,lp_dontdescend(SNUM(conn))));
|
DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n", conn->dirpath,lp_dontdescend(SNUM(conn))));
|
||||||
if (in_list(conn->dirpath,lp_dontdescend(SNUM(conn)),case_sensitive))
|
if (in_list(conn->dirpath,lp_dontdescend(SNUM(conn)),conn->case_sensitive))
|
||||||
dont_descend = True;
|
dont_descend = True;
|
||||||
|
|
||||||
p = pdata;
|
p = pdata;
|
||||||
@ -1633,7 +1632,7 @@ resume_key = %d resume name = %s continue=%d level = %d\n",
|
|||||||
a different TRANS2 call. */
|
a different TRANS2 call. */
|
||||||
|
|
||||||
DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n",conn->dirpath,lp_dontdescend(SNUM(conn))));
|
DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n",conn->dirpath,lp_dontdescend(SNUM(conn))));
|
||||||
if (in_list(conn->dirpath,lp_dontdescend(SNUM(conn)),case_sensitive))
|
if (in_list(conn->dirpath,lp_dontdescend(SNUM(conn)),conn->case_sensitive))
|
||||||
dont_descend = True;
|
dont_descend = True;
|
||||||
|
|
||||||
p = pdata;
|
p = pdata;
|
||||||
|
Loading…
Reference in New Issue
Block a user