Treat filenames in POSIX namespace as case insensitive in case of case insensitive mounts.
parent
0ac08318a6
commit
7d1016fe97
|
@ -67,6 +67,8 @@ xx/xx/2006 - x.xx.x - .
|
|||
- Rewrite ntfs_attr_add() algorithm to be faster and cleverer. (Yura)
|
||||
- Rename MS_{RDONLY,NOATIME} to NTFS_MNT_{RDONLY,NOATIME}. Introduce
|
||||
NTFS_MNT_CASE_SENSITIVE. (Yura)
|
||||
- Treat filenames in POSIX namespace as case insensitive in case of
|
||||
case insensitive mounts. (Anton, Yura)
|
||||
|
||||
21/06/2006 - 1.13.1 - Various fixes.
|
||||
|
||||
|
|
|
@ -186,28 +186,17 @@ found_it:
|
|||
}
|
||||
/*
|
||||
* For a case insensitive mount, we also perform a case
|
||||
* insensitive comparison (provided the file name is not in the
|
||||
* POSIX namespace). If the comparison matches, we cache the
|
||||
* mft reference in mref.
|
||||
* insensitive comparison. If the comparison matches, we cache
|
||||
* the mft reference in mref. Use first case insensitive match
|
||||
* in case if no name matches case sensitive, but several names
|
||||
* matches case insensitive.
|
||||
*/
|
||||
if (!NVolCaseSensitive(vol) &&
|
||||
ie->key.file_name.file_name_type &&
|
||||
if (!mref && !NVolCaseSensitive(vol) &&
|
||||
ntfs_names_are_equal(uname, uname_len,
|
||||
(ntfschar*)&ie->key.file_name.file_name,
|
||||
ie->key.file_name.file_name_length,
|
||||
IGNORE_CASE, vol->upcase, vol->upcase_len)) {
|
||||
/* Only one case insensitive matching name allowed. */
|
||||
if (mref) {
|
||||
ntfs_log_error("Found already cached mft "
|
||||
"reference in phase 1. Please "
|
||||
"run chkdsk and if that doesn't"
|
||||
" find any errors please report"
|
||||
" you saw this message to %s\n",
|
||||
NTFS_DEV_LIST);
|
||||
goto put_err_out;
|
||||
}
|
||||
IGNORE_CASE, vol->upcase, vol->upcase_len))
|
||||
mref = le64_to_cpu(ie->indexed_file);
|
||||
}
|
||||
/*
|
||||
* Not a perfect match, need to do full blown collation so we
|
||||
* know which way in the B+tree we have to go.
|
||||
|
@ -381,28 +370,17 @@ found_it2:
|
|||
}
|
||||
/*
|
||||
* For a case insensitive mount, we also perform a case
|
||||
* insensitive comparison (provided the file name is not in the
|
||||
* POSIX namespace). If the comparison matches, we cache the
|
||||
* mft reference in mref.
|
||||
* insensitive comparison. If the comparison matches, we cache
|
||||
* the mft reference in mref. Use first case insensitive match
|
||||
* in case if no name matches case sensitive, but several names
|
||||
* matches case insensitive.
|
||||
*/
|
||||
if (!NVolCaseSensitive(vol) &&
|
||||
ie->key.file_name.file_name_type &&
|
||||
if (!mref && !NVolCaseSensitive(vol) &&
|
||||
ntfs_names_are_equal(uname, uname_len,
|
||||
(ntfschar*)&ie->key.file_name.file_name,
|
||||
ie->key.file_name.file_name_length,
|
||||
IGNORE_CASE, vol->upcase, vol->upcase_len)) {
|
||||
/* Only one case insensitive matching name allowed. */
|
||||
if (mref) {
|
||||
ntfs_log_error("Found already cached mft "
|
||||
"reference in phase 2. Please "
|
||||
"run chkdsk and if that doesn't"
|
||||
" find any errors please report"
|
||||
" you saw this message to %s\n",
|
||||
NTFS_DEV_LIST);
|
||||
goto close_err_out;
|
||||
}
|
||||
IGNORE_CASE, vol->upcase, vol->upcase_len))
|
||||
mref = le64_to_cpu(ie->indexed_file);
|
||||
}
|
||||
/*
|
||||
* Not a perfect match, need to do full blown collation so we
|
||||
* know which way in the B+tree we have to go.
|
||||
|
@ -1524,8 +1502,7 @@ search:
|
|||
if (dir_ni->mft_no == MREF_LE(fn->parent_directory) &&
|
||||
ntfs_names_are_equal(fn->file_name,
|
||||
fn->file_name_length, name,
|
||||
name_len, (fn->file_name_type ==
|
||||
FILE_NAME_POSIX || case_sensitive_match) ?
|
||||
name_len, case_sensitive_match ?
|
||||
CASE_SENSITIVE : IGNORE_CASE, ni->vol->upcase,
|
||||
ni->vol->upcase_len)) {
|
||||
if (fn->file_name_type == FILE_NAME_WIN32) {
|
||||
|
|
|
@ -1411,8 +1411,8 @@ static int ntfs_fuse_mount(const char *device)
|
|||
ntfs_volume *vol;
|
||||
|
||||
vol = utils_mount_volume(device, ((ctx->ro) ? NTFS_MNT_RDONLY : 0) |
|
||||
((ctx->noatime) ? NTFS_MNT_NOATIME : 0) |
|
||||
NTFS_MNT_CASE_SENSITIVE, ctx->force);
|
||||
((ctx->noatime) ? NTFS_MNT_NOATIME : 0) /*|
|
||||
NTFS_MNT_CASE_SENSITIVE*/, ctx->force);
|
||||
if (!vol) {
|
||||
ntfs_log_error("Mount failed.\n");
|
||||
return -1;
|
||||
|
|
Loading…
Reference in New Issue