Re: [Boost-users] Boost-users Digest, Vol 1984, Issue 2
Date: Sun, 03 May 2009 21:43:59 +0100 From: Chris Spencer
Subject: [Boost-users] Filesystem: Case insensitive search on case sensitive systems To: boost-users@lists.boost.org Message-ID: <49FE020F.6030905@googlemail.com> Content-Type: text/plain; charset=UTF-8 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi all,
I am writing a cross-platform program which takes path names from a Windows-originating file. As such, there is no guarantee that the paths match the case of what is actually stored in the file system. Does anyone have any advice on the best way to do a case-insensitive search to get the correct path?
Thanks, Chris. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkn+AgoACgkQ6iqRtkAADZhrFQCgxL0prbFme94Y6/D6IqNQccT+ bWYAoPZPopoX4YyhjrkCe/u74YsjZUQM =SavU -----END PGP SIGNATURE-----
For NTFS, the rules are in the $UpCase (reserved file #10) in the root directory. But don't forget that short-name aliases are also matched against. For FAT, the rules depend on the OEM Code Page used. That's not just because the chars are encoded differently, but the rules are different too. Specifically, does upper-casing a letter keep or remove an accent mark? Or, do some letters not have case equivalents at all? But now FAT has a "longname" in there also, which is stored in USC2. There's the ISO file system used on CDs, with or without Joliet extensions. There's the UFS file system on DVDs. Both have their own standards on what case-insensitivity means, which may or may not be followed by the OS to various degrees. Basically, the rules are specific to the file system and the individual media. If you know those rules (try looking at ReactOS), you still have to match each subdirectory along the path individually and watch for symbolic links and reparse points which can shift you to a different volume with different rules in force. Check out http://blogs.msdn.com/michkap/archive/2007/10/24/5641619.aspx, for example. --John (sorry about the footer) TradeStation Group, Inc. is a publicly-traded holding company (NASDAQ GS: TRAD) of three operating subsidiaries, TradeStation Securities, Inc. (Member NYSE, FINRA, SIPC and NFA), TradeStation Technologies, Inc., a trading software and subscription company, and TradeStation Europe Limited, a United Kingdom, FSA-authorized introducing brokerage firm. None of these companies provides trading or investment advice, recommendations or endorsements of any kind. The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.
participants (1)
-
John Dlugosz