patch to allow touch to work on HPFS (and others, maybe??)
Corinna Vinschen
vinschen@redhat.com
Thu Feb 10 10:46:00 GMT 2005
On Feb 9 10:27, Mark Paulus wrote:
> I'm not exactly giving up. It's just that at this point it looks like
> the fix will not be trivial, and since my company will not endorse
> a Waiver, I'm limited in the scope of fixes I can provide. However,
> I am more than willing to provide any testing/debugging services
> that are needed. The other issue is that this does not seem to be
> a huge issue, since it hasn't surfaced too much previous to this.
True. I guess that there are not a lot of people out there using HPFS
anymore. But if there's an easy solution, why not include it anyway?
> rootdir: z:\
> Volume Name : <>
> Serial Number : 2834707476
> Max Filenamelength : 254
> Filesystemname : <??SS>
> Flags:
> FILE_CASE_SENSITIVE_SEARCH : FALSE
> FILE_CASE_PRESERVED_NAMES : TRUE
> FILE_UNICODE_ON_DISK : FALSE
> FILE_PERSISTENT_ACLS : FALSE
> FILE_FILE_COMPRESSION : FALSE
> FILE_VOLUME_QUOTAS : FALSE
> FILE_SUPPORTS_SPARSE_FILES : FALSE
> FILE_SUPPORTS_REPARSE_POINTS: FALSE
> FILE_SUPPORTS_REMOTE_STORAGE: FALSE
> FILE_VOLUME_IS_COMPRESSED : FALSE
> FILE_SUPPORTS_OBJECT_IDS : FALSE
> FILE_SUPPORTS_ENCRYPTION : FALSE
> FILE_NAMED_STREAMS : FALSE
> FILE_READ_ONLY_VOLUME : FALSE
The filesystemname is [insert 4-letter word here], really.
However, that let me rethink what I stated yesterday in my reply to
Yitzchak. The original patch, which introduced the usage of
FILE_WRITE_ATTRIBUTES into utimes() made a decision based on the
operating system. Without looking into the original code, it was
roughly like this:
if (wincap.has_specific_attribs ())
attrib = FILE_WRITE_ATTRIBUTES;
else
attrib = GENERIC_WRITE;
wincap.has_specific_attribs () returned true for NT systems and false
for 9x systems. At one point I just removed that stuff since it turned
out that 9x perfectly understood specific attribs and probably translated
them into something like GENERIC_WRITE internally.
But, isn't that something which can be easily coupled to the file system?
It seems that using FILE_WRITE_ATTRIBUTES only makes sense on file systems
supporting FILE_PERSISTENT_ACLS, regardless which OS is running, isn't it?
So, what if we just use the has_acls() attribute of path_conv to make the
decision?
if (win32.has_acls ())
attrib = FILE_WRITE_ATTRIBUTES;
else
attrib = GENERIC_WRITE;
Thoughts?
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader mailto:cygwin@cygwin.com
Red Hat, Inc.
More information about the Cygwin-patches
mailing list