It works great, but there's one quirk: the paths we're given from CBFS have been transformed into all uppercase! Often it's only the directory path leading up to the leaf but not the leaf itself, but other times (like for GetFileInfo) it's the entire path.

We're case-insensitive where we can be, so this works out fine for the most part for English-speaking users, but we run into trouble when using non-English characters.

For example, I made a file called Möbelträgerfüße.txt. But when I try to open it, CBFS gives me a callback with the filename MÖBELTRÄGERFÜßE.TXT. In this example, we have trouble converting the letters with umlauts and the eszett. Long-term we'd like to be able to handle this, but short-term we have other priorities.

As Windows filesystems are generally case-insensitive, the situation is quite normal and your code is expected to deal with it. I don't see where CBFS could support you in this case - we can't roll back uppercase to some other case which your code expects as we don't know it (only your code knows correct case).

Let's focus on the troubles with case conversion instead. What exactly problems are you having with it?

Perhaps there's some misunderstanding. I don't expect CBFS to do the conversion for me - what I'm hoping is for CBFS to not change the cases to begin with. If we use CBFS to mount to a drive letter, and I double click a file in Explorer called "foo.txt", the callbacks we get from you all say "foo.txt". But if ALL we do differently is mount at a non-drive letter location using CBFS_SYMLINK_MOUNT_MANAGER with AddMountingPoint(), then suddenly the same double-clicking operation would cause the callbacks to say "FOO.TXT".

Since that's the only difference, it stands to reason that CBFS is causing this conversion. Maybe not directly, but by some way you're interacting with the OS.

Doing the case conversion ourselves is problematic because we use SQLite, which only provides collations that are case-insensitive for basic ASCII characters. As I said, we plan to solve this long-term, but we're looking for a short-term fix.

Something changed in this behavior between CBFS 5 and 6. In version 5, the file names in the callbacks would have the preserved case (i.e. 'foo.txt' if I create a file with name 'foo.txt'). But in CBFS version 6, the callback is always provided with an upper-cased file name (i.e. 'FOO.TXT'). This is preventing me from upgrading to CBFS 6 since this breaks my application.

We use cookies to help provide you with the best possible online experience. By using this site, you agree that we may store and access cookies on your device. You can find out more about and set your own preferences here.