bug in cygstart utility
Brian Inglis
Brian.Inglis@SystematicSw.ab.ca
Mon Mar 1 15:06:11 GMT 2021
On 2021-03-01 04:17, John Vincent via Cygwin wrote:
> I'm running cygwin on Windows 10, using UTF8 in English. I run cygwin bash
> inside a cygwin mintty terminal. I've noticed a minor problem when using
> cygstart with wildcard parameters.
> I type:
> $ cygstart *.??p
> If there is a matching file then everything works as I expect. However if
> there is no matching file I get an error message as follows:
> Unable to start '.p': The specified file was not found.
> When I look at this using the "od" command I see the following:
> $ cygstart *.??p 2>&1 | od -tx1 -c
> 0000000 55 6e 61 62 6c 65 20 74 6f 20 73 74 61 72 74 20
> U n a b l e t o s t a r t
> 0000020 27 ef 80 aa 2e ef 80 bf ef 80 bf 70 27 3a 20 54
> ' 357 200 252 . 357 200 277 357 200 277 p ' : T
> 0000040 68 65 20 73 70 65 63 69 66 69 65 64 20 66 69 6c
> h e s p e c i f i e d f i l
> 0000060 65 20 77 61 73 20 6e 6f 74 20 66 6f 75 6e 64 2e
> e w a s n o t f o u n d .
> 0000100 0a
> \n
> It looks to me like cygstart is not outputting the correct UTF-8 for either
> the * character or the ? character. I think this is a bug.
To support POSIX path names, Cygwin allows any characters other than \0 and /,
so it maps Windows special characters into the UTF-8 BMP PUA:
https://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars
http://www.unicode.org/faq/private_use.html
https://en.wikipedia.org/wiki/Private_Use_Areas
It may also prefix unsupported codes in a code page with CAN/0x18.
The bug is in displaying in the error message the remapped string with
undisplayable PUA characters, rather than either the reverse mapped string or
the original input path name.
--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]
More information about the Cygwin
mailing list