Charles Davis cdavis@mymail.mines.edu writes:
@@ -1828,13 +2054,24 @@ static NTSTATUS find_file_in_dir( char *unix_name, int pos, const WCHAR *name, i if (ret >= 0 && !used_default) { unix_name[pos + ret] = 0;
if (!stat( unix_name, &st ))
/* when checking case on a case insensitive but case preserving
* fs, don't even bother doing the stat(), so we don't match the
* file case-insensitively.
*/
if ((case_sensitive || !check_case) && !stat( unix_name, &st )) { if (is_win_dir) *is_win_dir = is_same_file( &windir, &st ); return STATUS_SUCCESS; }
This still doesn't make sense. There's no reason to ever skip the stat.
@@ -2455,6 +2713,10 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer const WCHAR *end, *next; int is_win_dir = 0;
unix_name[pos] = 0;
stat( unix_name, &st );
unix_name[pos] = '/';
You can't add extra stat calls to the normal path. This is supposed to be an optimization.