On Oct 25 21:36, Jon Turney wrote: > On 25/10/2017 21:16, Corinna Vinschen wrote: > > On Oct 25 20:23, Jon Turney wrote: > > > On 25/10/2017 16:50, Ken Brown wrote: > > > > This is a followup to the thread started here: > > > > > > > >   https://cygwin.com/ml/cygwin-patches/2017-q4/msg00012.html > > > > > > > > Currently setup's parse_filename is not correctly parsing filenames in > > > > /etc/setup/installed.db that contain colons, as explained in the above > > > > thread.  It would be easy to fix this by just ripping out the 'base' > > > > function, except for the fact that parse_filename is called by > > > > ScanFindVisitor::visitFile. > > > > > > Since older setup cannot correctly parse an installed.db containing > > > filenames like that, we should probably bump the installed.db version at the > > > same time as fixing this. > > > > > > > I don't know enough about WIN32_FIND_DATA to know whether the call to > > > > 'base' is needed for that use of parse_filename.  If so, is it safe to > > > > skip all colons in that setting, since we're dealing with Win32 > > > > filenames and they don't see the colons in Cygwin filenames? > > > > > > Yeah, that's about as far as I got before giving up... > > > > > > > Do we need two versions of parse_filename, one that calls base and one > > > > that doesn't? > > > > > > This might be the easiest solution :) > > > > > > The other concern I had was if the filenames for the package archives stored > > > in the download cache end up containing a ':', which I thought wasn't > > > allowed in windows filenames? > > > > Colons in Cygwin filenames will have 0xf03a value in WIN32. The code to > > transpose special chars into the private use area at 0xf0XY is in setup, > > but I'm not sure if setup is really working correctly with archives > > containing a colon. > I think the package archives are stored using native Windows filenames, not > cygwin filenames (i.e. file:// paths rather than cygfile:// paths), because > the "Local Package Directory" is not necessarily under the cygwin root, so > I'm not sure that transformation applies. The transposition is handled in mklongpath, which is called in nt_fopen, or called manually in other callers of nt_wfopen to construct the long path. In theory, this should cover all bases... Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat