Listing 1 Identifying case-sensitive filenames that would clash as duplicates on case-insensitive filesystems
int cmp_no_case( struct dirent const *lhs
, struct dirent const *rhs);
int main(int , char **)
{
using unixstl::readdir_sequence;
readdir_sequence files("/usr/include");
readdir_sequence::const_iterator begin_o(files.begin());
readdir_sequence::const_iterator end_o(files.end());
for(; begin_o != end_o; ++begin_o) // outer loop
{
readdir_sequence::const_iterator begin_i = begin_o;
for(++begin_i; begin_i != end_o; ++begin_i) // inner loop
{
if(0 == cmp_no_case(*begin_o, *begin_i))
{
printf("Duplicate: %s, %s\n",
(*begin_o)->d_name,
(*begin_i)->d_name);
}
}
}
return 0;
}