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] |
On Thu, 12 Sep 2002, Igor Pechtchanski wrote: > 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? Well, after further reading of the code and experimenting I've determined two things: 1) the '-l' option of cygpath works in the cvs HEAD, and 2) it does exactly what we need (thanks, Corinna). So we can use $(cygpath -u $(cygpath -l -w "$WINETC/$WFILE")) in the script. This would require people to upgrade to the new cygpath (which they would have to anyway, if they were to use the option we proposed), which means that this script can not be released before the next cygwin, but that is probably fine. New version and diff attached. Igor P.S. I'm racking my brain trying to figure out why -l didn't work for me in version 1.21 of cygpath, but did in version 1.22. As far as I could see, the only changes to cygpath were some added newlines... -- 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
Attachment:
make-etc-links.sh
Description: Text document
Attachment:
make-etc-links.sh-0.7-diff
Description: Text document
-- 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] |