delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/06/06/10:24:34

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <17B78BDF120BD411B70100500422FC6309E590@IIS000>
From: Bernard Dautrevaux <Dautrevaux AT microprocess DOT com>
To: "'Michael Eager'" <eager AT mvista DOT com>,
"Larry Hall (RFK Partners, Inc)"
<lhall AT rfk DOT com>
Cc: Cygwin Mailing List <cygwin AT cygwin DOT com>
Subject: RE: DOS Special Names
Date: Thu, 6 Jun 2002 16:17:32 +0200
MIME-Version: 1.0


> -----Original Message-----
> From: Michael Eager [mailto:eager AT mvista DOT com]
> Sent: Thursday, June 06, 2002 3:28 AM
> To: Larry Hall (RFK Partners, Inc)
> Cc: Cygwin Mailing List
> Subject: Re: DOS Special Names
> 
> 
> "Larry Hall (RFK Partners, Inc)" wrote:
> > 
> > At 03:29 PM 6/5/2002, Michael Eager wrote:
> > >I've run into a problem creating a regular file with the name
> > >COM20000.  I can create this file from Windows, either using
> > >fopen() or in a Command window, but not when using Cygwin.
> > >Windows does prevent creating files named COMx, where x is a
> > >single digit.
> > >
> > >The code in winsup/cygwin/path.cc checks to see if the file
> > >name is COM followed by any integer, not just a single digit.
> > >Is this intentional or an error?
> > >
> > >Shouldn't Cygwin check to see if there is an installed driver
> > >named COM (or AUX, etc.) rather than just assume that all COMxxxx
> > >are supposed to be devices?
> > 
> > I agree that it makes sense for Cygwin not to restrict more 
> file names
> > than Windows does.  Feel free to submit a patch for this, 
> if you're so
> > inclined.
> 
> Index: path.cc
> ===================================================================
> RCS file: /cvs/src/src/winsup/cygwin/path.cc,v
> retrieving revision 1.219
> diff -u -r1.219 path.cc
> --- path.cc     5 Jun 2002 04:01:42 -0000       1.219
> +++ path.cc     6 Jun 2002 01:25:41 -0000
> @@ -916,7 +916,7 @@
>        devn = FH_MEM;
>        unit = 4;
>      }
> -  else if (deveqn ("com", 3) && (unit = digits (name + 3)) >= 0)
> +  else if (deveqn ("com", 3) && (unit = digits (name + 3)) 
> >= 0 && unit < 10)

You should in fact rather write:
  else if (deveqn ("com", 3) && name[3] >= '1' && name[3] <= '9' && name[4]
== 0)
(presuming name is just the device name, accepting also '/' and '\' if name
is the full path name). Your patch rejects both "COM0" and "COM01", which
are legal; only "COM1" to "COM9" are illegal (I just check on
NT-4.0/SP6a)...

>      devn = FH_SERIAL;
>    else if (deveqn ("ttyS", 4) && (unit = digits (name + 4)) >= 0)
>      {
> @@ -1070,7 +1070,7 @@
>        if (p)
>         unix_path = p + 1;
>        if (udeveqn ("com", 3)
> -        && (unit = digits (unix_path + 3)) >= 0)
> +        && (unit = digits (unix_path + 3)) >= 0 && unit < 10)

should do the same here

>         devn = FH_SERIAL;
>      }
> 
> 
> --
> Michael Eager     eager AT mvista DOT com	408-328-8426	
> MontaVista Software, Inc. 1237 E. Arques Ave., Sunnyvale, CA  94085
> 
> --
> Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
> Bug reporting:         http://cygwin.com/bugs.html
> Documentation:         http://cygwin.com/docs.html
> FAQ:                   http://cygwin.com/faq/
> 

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019