Filenames with Win32 special characters (or: Interix filename compatibility)

Corinna Vinschen
Tue Mar 11 10:50:00 GMT 2008

On Mar 11 03:40, Brian Dessent wrote:
> Corinna Vinschen wrote:
> > In Cygwin you would suddenly have transparent POSIX filenames, plus the
> > additional advantage of filename compatibility with Interix.  It would
> > also remove the requirement for managed mounts.
> It sounds like there is no serious downside, and a very real upside. 
> But wouldn't we still need to keep managed mounts for case sensitivity
> and reserved DOS device names?

Reserved DOS device names are no problem in the NT name space.  In 1.7.0
you can create a file "nul" in your cwd and access it as file, as long
as you use Cygwin or Interix.

Case sensitivity is still not possible with this approach.  You
can get generic case sensitivity in Cygwin with a bit of work.  The 
magic flag is OBJ_CASE_INSENSITIVE in the object attributes.  However,
this would not work for fork/exec.

> Although, for a while there we accidently allowed creating the reserved
> word filenames and nothing seemed to break, other than the fact that
> Cygwin could create files that were utterly undeleteable using normal
> methods.  But if I recall correctly that was only because at the time we
> were only using NtCreateFile to open files, the rest was standard Win32
> ANSI.  Now that we've switched to the wide functions does that mean that
> there's a chance that we could also unlink("CON")/rename("CON")
> successfully as well?  If so I'm all for re-enabling the ability to
> create those again.

It's already enabled.  Just use it.

> The only potential conflict I can think of is that someone might
> actually want the current behavior of ':' in order to access alternate
> streams.  Perhaps it should be conditionalized on a flag (default on) so
> that those that want it can:
> $ CYGWIN=noposixnames echo "secret" >file.txt:ads

Blaeh.  Is anybody really using streams seriously?  As far as the
Cygwin mailing list goes, people always complained that trying to
create a file 'foo:bar' always only creates a file 'foo'.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

More information about the Cygwin-developers mailing list