The spec states:
File paths and filenames in the OCFL are case sensitive. Filesystems MUST preserve the case of OCFL filepaths and filenames.
What exactly does the second sentence mean? Does it mean that case must be preserved within the inventory? Does it mean that case must be preserved on the filesystem?
Regardless of the intent, it's not clear to me what an implementation is supposed to do on filesystems like NTFS and HFS. They will technically preserve case, but they are also case insensitive.
What is a client supposed to do if foo/bar.txt and Foo/Bar.txt are inserted into an object? My assumption is that OCFL wants them to be treated as distinct logical paths, but how do you translate them to content paths? A direct logical path to content path translation would result in an unintended collision. It would seem that using OCFL on case insensitive filesystems would require a more invasive translation.
Similarly, I learned this evening that HFS additionally NFD normalizes all filenames, which may cause issues for OCFL content paths.
The spec states:
What exactly does the second sentence mean? Does it mean that case must be preserved within the inventory? Does it mean that case must be preserved on the filesystem?
Regardless of the intent, it's not clear to me what an implementation is supposed to do on filesystems like NTFS and HFS. They will technically preserve case, but they are also case insensitive.
What is a client supposed to do if
foo/bar.txtandFoo/Bar.txtare inserted into an object? My assumption is that OCFL wants them to be treated as distinct logical paths, but how do you translate them to content paths? A direct logical path to content path translation would result in an unintended collision. It would seem that using OCFL on case insensitive filesystems would require a more invasive translation.Similarly, I learned this evening that HFS additionally NFD normalizes all filenames, which may cause issues for OCFL content paths.