Subject: B20: cygpath doesn't handle 8.3 tilde names
From: "Dan St.Andre'" <[email-masked]>
To: [email-masked]
Date: Mon, 12 Jul 1999 16:46:30 -0500

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.

    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.

        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:[email-masked]
--
==============================================================
The Tenth Amendment ... its not only a good idea, its the law!
http://www.law.cornell.edu/constitution/constitution.billofrights.html#amendmentx

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

--
Want to unsubscribe from this list?
Send a message to [email-masked]