Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , 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 To: "'Michael Eager'" , "Larry Hall (RFK Partners, Inc)" Cc: Cygwin Mailing List Subject: RE: DOS Special Names Date: Thu, 6 Jun 2002 16:17:32 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" > -----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/