Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: From: "Lincoln, W. Terry" To: "'Dan St.Andre''" , cygwin AT sourceware DOT cygnus DOT com Subject: RE: B20: cygpath doesn't handle 8.3 tilde names Date: Tue, 13 Jul 1999 09:04:46 -0400 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2448.0) Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01BECD30.494F2340" ------_=_NextPart_001_01BECD30.494F2340 Content-Type: text/plain; charset="iso-8859-1" > -----Original Message----- > From: Dan St.Andre' [mailto:saint AT savantage DOT com] > Sent: Monday, July 12, 1999 5:47 PM > To: cygwin AT sourceware DOT cygnus DOT com > Subject: B20: cygpath doesn't handle 8.3 tilde names > > > SITUATION: > Given a 16-bit DOS command line utility that expects 8.3 format names and > paths, > the following command might fail giving error messages: > > bash $ myProg `cygpath -w ../folder/file` target > myProg: Error C101: Unable to complete operation! Please check source/destination files > and disks. > > ANALYSIS: > Upon inspection, "cygpath -w ../folder/file" resulted in a detailed path where certain > folder names were longer than eight characters. Also, myProg was discovered to be > a win16 application that required 8.3 format folder and file names. > > In the 8.3 world, no folder name along the path may be longer than eight(8) characters. > In addition, file names have a similar eight character limit and the extension [part to the > right of the period] must be three(3) or fewer characters. Windows makes magic names of the > form "mumble~N" where mumble is the left hand six(6) characters of long names. There are also > length restrictions on the total length of the path+filename+extension. [Sorry, I don't > remember them.] > > DISCUSSION: > I propose adding a "-8" option that deals with > tilde-names. Everywhere that windoze > deals with long names, tilde-names are supposed to work. If > you changed the existing > "-w" to output tilde-names, both short name and long name > windoze programs would be happy. > I admit, that it would be regrettable to discard longname output. This would not work for programs that recreate the file as output and/or rename the original as a .bak file because the long name would be permanently lost and that would break other program(s) in which the original name is hardcoded into a batch, script or link. > Any implementation would need to grab a strings that are > right of a slash '/'. If that string is longer > that eight characters, then make it a tilde-name. Iterate > until the last long string has been processed. > > RECOMMENDATION: > 1. Cheap: Add an option like "-8" (preferred) or "-d" to > request 8.3 format names > > bash $ cygpath -8 /usr/local/mumble-very-long-name.dat > C:\usr\local\mumble~1.dat > > 2. Nice to have: Add some way that we get either longnames > or 8.3 names. > This might be output from either 'test' or 'file' or 'type' > that could instruct > cygpath how to behave > based on the needs of the command verb EXE file. I could > also see this as some > sort of > the 'exec16' behavior. I would suggest you create a wrapper script to call your 16-bit program that looks similar to this: @echo off rem myWrapper.cmd myProg %~sf1 %~sf2 then just call it like this: bash $ myWrapper `cygpath -w ../folder/file` target The format of the above arguments in the myWrapper.cmd causes CMD.EXE to substitute the 8.3 full path name of the th arg in place of the %~sf sequence. > > bash $ #=== do we have a 16-bit dos program? > bash $ if [ -8 `which myprog` ] ; then > more> myprog `cygpath -8 > /usr/local/mumble-very-long-name.dat` > target > more> else > more> myprog `cygpath -w > /usr/local/mumble-very-long-name.dat` > target > more> fi > --or-- > bash $ exec16 myProg `cygpath -w ../folder/file` target > > Cordially, > Dan St.Andre' > The GRILLON Group > mailto:grillon AT mindspring DOT com > -- > ============================================================== > The Tenth Amendment ... its not only a good idea, its the law! > http://www.law.cornell.edu/constitution/constitution.billofrights.html#amend mentx ============================================================== Go in His love! W. Terry Lincoln - Senior Engineer \ \ _ / Ultimate Technology Corporation \ \ |J| / a Tridex Company (NASDAQ:trdx) \ _|E|_ ICQ# 39362285 \ |_ S _| \ |U| \ / |S| \ | | ================================================ ~~~~~ Opinions expressed do not represent the management of UTC. ------_=_NextPart_001_01BECD30.494F2340 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable RE: B20: cygpath doesn't handle 8.3 tilde names

> -----Original Message-----
> From: Dan St.Andre' [mailto:saint AT savantage DOT com]
> Sent: Monday, July 12, 1999 5:47 PM
> To: cygwin AT sourceware DOT cygnus DOT com
> Subject: B20: cygpath doesn't handle 8.3 tilde = names
>
>
> SITUATION:
>     Given a 16-bit DOS = command line utility that expects 8.3 format names and
> paths,
> the following command might fail giving error = messages:
>
>         = bash $  myProg  `cygpath -w ../folder/file`  = target
>         = myProg: Error C101: Unable to complete operation! Please check = source/destination files
>         = and disks.
>
> ANALYSIS:
>     Upon inspection, = "cygpath -w ../folder/file" resulted in a detailed path where = certain
> folder names were longer than eight = characters.  Also, myProg was discovered to be
> a win16 application that required 8.3 format = folder and file names.
>
>     In the 8.3 world, no = folder name along the path may be longer than eight(8) = characters.
> In addition, file names have a similar eight = character limit and the extension [part to the
> right of the period] must be three(3) or fewer = characters.  Windows makes magic names of the
> form  "mumble~N" where mumble is = the left hand six(6) characters of long names. There are also
> length restrictions on the total length of the = path+filename+extension.  [Sorry, I don't
> remember them.]
>
> DISCUSSION:
>     I propose adding a = "-8" option that deals with
> tilde-names.  Everywhere that = windoze
> deals with long names, tilde-names are supposed = to work.  If
> you changed the existing
> "-w" to output tilde-names, both = short name and long name
> windoze programs would be happy.
> I admit, that it would be regrettable to = discard longname output.

This would not work for programs that recreate the = file as output and/or rename the original as a .bak file because the = long name would be permanently lost and that would break other = program(s) in which the original name is hardcoded into a batch, script = or link.

 
>     Any implementation = would need to grab a strings that are
> right of a slash '/'.  If that string is = longer
> that eight characters, then make it a = tilde-name.  Iterate
> until the last long string has been = processed.
>
> RECOMMENDATION:
> 1.  Cheap:  Add an option like = "-8" (preferred) or "-d" to
> request 8.3 format names
>
>         = bash $  cygpath -8 /usr/local/mumble-very-long-name.dat
>         = C:\usr\local\mumble~1.dat
>
> 2.  Nice to have:  Add some way that = we get either longnames
> or 8.3 names.
> This might be output from either 'test' or = 'file' or 'type'
> that could instruct
> cygpath how to behave
> based on the needs of the command verb EXE = file.  I could
> also see this as some
> sort of
> the 'exec16' behavior.

I would suggest you create a wrapper script to call = your 16-bit program that looks similar to this:

@echo off
rem myWrapper.cmd
myProg %~sf1 %~sf2

then just call it like this:

bash $  myWrapper  `cygpath -w = ../folder/file`  target

The format of the above arguments in the = myWrapper.cmd causes CMD.EXE to substitute the 8.3 full path name of = the <N>th arg in place of the %~sf<N> sequence.

>
>         = bash $ #=3D=3D=3D do we have a 16-bit dos program?
>         = bash $ if  [ -8 `which myprog` ] ; then
>         = more>     myprog  `cygpath -8
> /usr/local/mumble-very-long-name.dat`
> target
>         = more> else
>         = more>     myprog  `cygpath -w
> /usr/local/mumble-very-long-name.dat`
> target
>         = more>  fi
> --or--
>         = bash $  exec16  myProg  `cygpath -w = ../folder/file`  target
>
> Cordially,
>     Dan St.Andre'
>     The GRILLON = Group
>     mailto:grillon AT mindspring DOT com=
> --
> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> The Tenth Amendment ... its not only a good = idea, its the law!
> http://www.law.cornell.edu/constitution/constitution.b= illofrights.html#amendmentx

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Go in His love!

W. Terry Lincoln - Senior = Engineer       \     = \   _   /
Ultimate Technology = Corporation           = \     \ |J| /
a Tridex Company = (NASDAQ:trdx)          = ;   \     _|E|_
ICQ# = 39362285          &nbs= p;           &nbs= p;        \   |_ S = _|
<mailto:WTerryLincoln AT engineer= .com>          = \    |U|
<http://www.AngelFire.com/ny/TerryLincoln> =    \ / |S| \
<http://www.geocities.com/Eureka/Concourse/7326>=   | |
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D ~~~~~
Opinions expressed do not represent the management = of UTC.

------_=_NextPart_001_01BECD30.494F2340--