B20: cygpath doesn't handle 8.3 tilde names

Lincoln, W. Terry terryl@ultimatetechnology.com
Sat Jul 31 18:34:00 GMT 1999


Title: RE: B20: cygpath doesn't handle 8.3 tilde names





> -----Original Message-----
> From: Dan St.Andre' [ mailto:saint@savantage.com ]
> Sent: Monday, July 12, 1999 5:47 PM
> To: cygwin@sourceware.cygnus.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 $ #=== 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@mindspring.com
> --
> ==============================================================
> The Tenth Amendment ... its not only a good idea, its the law!
> http://www.law.cornell.edu/constitution/constitution.billofrights.html#amendmentx


==============================================================


Go in His love!


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






More information about the Cygwin mailing list