This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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

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

> -----Original Message-----
> From: Dan St.Andre' []
> Sent: Monday, July 12, 1999 5:47 PM
> To:
> Subject: B20: cygpath doesn't handle 8.3 tilde names
>     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.
>     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.]
>     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.
> 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
> --
> ==============================================================
> The Tenth Amendment ... its not only a good idea, its the law!


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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]