This is the mail archive of the
cygwin-patches@cygwin.com
mailing list for the Cygwin project.
Re: [Patch]: NUL and other special names
Igor Pechtchanski wrote:
>
> On Thu, 3 Jun 2004, Pierre A. Humblet wrote:
>
> > David Fritz wrote:
> >
> > [snip]
> > > Also, from the patch:
> > >
> > > /* COM and LPT must be followed by a single digit */
> > >
> > > The code in src/winsup/cygwin/devices.cc would seem to indicate that
> > > the number is not limited to a single digit.
> >
> > From my tests that's the behavior on 9x, so it's appropriate code for
> > managed mounts.
> >
> > Today on the list Igor indicated that PRN would soon regain its old
> > behavior. My patch was more modest, just forbid using PRN (and creating
> > a hard to delete file).
> >
> > Do we want to do what Igor suggested, although it's not Posix?
> > Pierre
>
> Well, if you intend to forbid the use of PRN, NUL, LPT*, COM*, etc, you
> should probably modify the User's Guide section on DOS devices
> <http://cygwin.com/cygwin-ug-net/using-specialnames.html#AEN796>, which
> explicitly states that the previous behavior is allowed/expected.
>
> IMO, either the names should be special DOS devices (and allow full
> functionality), or they should be non-special names that are treated just
> like any other files (e.g., allowing the "aux" directory, etc). The prior
> choice follows the principle of least surprise; the latter may eliminate
> the need for managed mounts (eventually).
> Igor
I was going to suggest making it a non-special name (on NT only,
so there is still a surprise effect)
That's easy, just prefix the path with //./ or //./unc/
But it's getting costly because we would need to:
- detect that the path is special initially, and each time a symlink is met
(the outer loop of ::check)
- process the mount table normally during the inner loop of ::check
and prefix as needed with //./ or //./unc/ (if not already there).
Also that can push a path length past the limit.
That doesn't help for the lower/upper case issue.
Not sure if it's worth it.
Pierre