CIOPFS - Case Insensitive on Purpose File System

Some time ago I saw Wine’s Google Summer of Code ideas as I know nearly nothing about the Windows pre .NET core APIs and have zero interest in learning them, most projects weren’t of interest to me. However, one idea about a case insensitive filesystem seamed like it would be fun to hack on.

The problem that wine has is that the file system on Windows is case insensitive while most POSIX file systems are case sensitive. In order to find a given file by a case insensitive file name wine does currently scan directories a lot and this is actually quite slow. So the idea is to let the file system deal with the whole mess. This would also solve the problem where a user extracts a zip archive over an already existing directory tree and expects that the files will be replaced instead of created with different case.

So I wrote a FUSE based case insensitive file system: ciopfs was born. Unfortunately the wine developers don’t seem to be too interested and so it probably won’t go anywhere in the near future but it was nonetheless fun to play with FUSE and maybe it will be useful for someone out there.