* fhandler.h (fhandler_base::fstat_helper): Declare with additional

file attributes argument.
	* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Use
	file attributes evaluated from NtQueryFileInformation or
	FileInformationByHandle in call to fstat_helper.
	Set pc.fileattr from just evaluated file attributes here.
	(fhandler_base::fstat_by_name): Use file attributes evaluated from
	FindFileFirst or default attribute in call to fstat_helper.
	Set pc.fileattr from just evaluated file attributes here.
	(fhandler_base::fstat_helper): Use file attributes given as argument,
	not file attributes stored in this fhandler, since this information
	is potentially wrong.  Add comment to explain this.
	* path.h (has_attribute): New global inline function.
	(path_conv::set_attributes): New method to change fileattr.
This commit is contained in:
Corinna Vinschen
2005-09-22 15:52:02 +00:00
parent f3a61fc4aa
commit f3810c7281
4 changed files with 75 additions and 31 deletions

View File

@@ -14,6 +14,13 @@ details. */
#include <fcntl.h>
#include <ntdef.h>
inline bool
has_attribute (DWORD attributes, DWORD attribs_to_test)
{
return attributes != INVALID_FILE_ATTRIBUTES
&& (attributes & attribs_to_test);
}
enum executable_states
{
is_executable,
@@ -161,6 +168,7 @@ class path_conv
bool isro () const {return !!(path_flags & PATH_RO);}
bool exists () const {return fileattr != INVALID_FILE_ATTRIBUTES;}
bool has_attribute (DWORD x) const {return exists () && (fileattr & x);}
void set_attributes (DWORD x) {fileattr = x;}
int isdir () const {return has_attribute (FILE_ATTRIBUTE_DIRECTORY);}
executable_states exec_state ()
{