Windowsって、ファイル名の大文字と小文字、区別しないんだな。
初めて知ったよ。


ていうかさ、ちょっとしたバックアップツール(差分コピー付)を
作ってたのよ。
バックアップ先に同名ファイルがあったら、退避するようにして。

で、まあ、当然日本語ファイル名は考慮するから、
コピー先に同名のファイルが存在しているかは、_mbsicmp()とかにするよな。
最初はこれ(_mbsicmp)が全角の"A"と"a"を同一視すると困ると思って試してみたけど
どうやらちゃんと区別してるっぽい(bcc55)。

で、動作確認のために、
"A.txt" を "a.txt" が存在するディレクトリにコピーしようとすると、
CopyFile()が失敗。
まさかと思ってエクスプローラでも確認したら
ちゃんと上書き確認が出やがる。

もしかして、Unicode版のAPIと_wcscmp()を使えば大丈夫か、と思って
_wcscmpの動作を調べたら、
"A"と"a"は区別するくせに、"a"と"a"を同一視しやがる。
使えねー。


結局、自分で「同一ファイル名か確認する」コードを書くのが良いのかね?
部分比較(strncmp)もしたいし
オリジナルのファイル名は尊重したいから、全部小文字に直すのは嫌だし。
比較のときだけ小文字に直す手もあるけれど。