This is the mail archive of the
mailing list for the Cygwin project.
Re: Finding exact case of paths
- From: Igor Pechtchanski <pechtcha at cs dot nyu dot edu>
- To: cygwin at cygwin dot com
- Date: Thu, 12 Sep 2002 20:12:13 -0400 (EDT)
- Subject: Re: Finding exact case of paths
- Reply-to: cygwin at cygwin dot com
On Fri, 13 Sep 2002, Paul Johnston wrote:
> > Oh, I see, add a modifier similar to '-s', so that it verifies the case of
> > each element in the path... Yeah, that could work, something like:
> > -e, --exact-case print exact case of NAME
> Yep, exactly. Now, cygpath seems to generally not hit the filesystem -
> cygpath c:/complete/crap gives me /c/complete/crap so using that switch
> will necessarily involve a performance hit. Given that, I think I'm
> happy with my solution based on dirent/strcasecmp. I've attached a
> stand-alone utility that seems to work (just on cygwin paths), although
> it has the side effect of squishing down multiple slashes
> ///like////this//path down to /like/this/path.
> I think it would be ok to restrict --exact-case to cygwin paths.
I don't think there's a need to search the directory yourself. Upon
browsing the cygpath code some more, I realized that it is doing exactly
what we need (i.e. convert to the exact path) when returning the system
directory (the '-S' flag). Quoting the code (cygpath.cc:396):
GetSystemDirectory (buf, MAX_PATH);
FindFirstFile (buf, &w32_fd);
strcpy (strrchr (buf, '\\') + 1, w32_fd.cFileName);
So we can do the same trick with each filename when our option ('-e') is
in effect. I'm looking at a fix to cygpath now, and will submit a patch
as soon as I have it ready.
On a separate note, I found that "cygpath -l -w <path>" does not work on
my Win2k SP2 system, returning the same garbage (hex 20 FB 22 0a)
regardless of the path. Anyone else have that problem?
|\ _,,,---,,_ firstname.lastname@example.org
ZZZzz /,`.-'`' -. ;-;;,_ email@example.com
|,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski
'---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!
It took the computational power of three Commodore 64s to fly to the moon.
It takes a 486 to run Windows 95. Something is wrong here. -- SC sig file
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html