This is the mail archive of the cygwin@cygwin.com 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]
Other format: [Raw text]

Re: Finding exact case of paths


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):

    case 'S':
      GetSystemDirectory (buf, MAX_PATH);
      FindFirstFile (buf, &w32_fd);
      strcpy (strrchr (buf, '\\') + 1, w32_fd.cFileName);
      break;

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?
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.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
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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