Messages in this thread | | | Date | Mon, 10 Aug 2009 21:05:09 -0500 | Subject | case-duplicated filenames | From | "Tony Mantler" <> |
| |
A co-worker reminded me this afternoon that the linux source tree does not get along well with case-insensitive filesystems. Ever the curious and bored sort, and in the middle of an sqlite bender, I decided to cook up a quick script to find exactly what files those are.
The results (in lowercase) are as follows: linux-source-2.6.30/include/linux/netfilter/xt_mark.h linux-source-2.6.30/include/linux/netfilter/xt_connmark.h linux-source-2.6.30/include/linux/netfilter/xt_dscp.h linux-source-2.6.30/include/linux/netfilter/xt_rateest.h linux-source-2.6.30/include/linux/netfilter/xt_tcpmss.h linux-source-2.6.30/include/linux/netfilter_ipv6/ip6t_mark.h linux-source-2.6.30/include/linux/netfilter_ipv6/ip6t_hl.h linux-source-2.6.30/include/linux/netfilter_ipv4/ipt_ttl.h linux-source-2.6.30/include/linux/netfilter_ipv4/ipt_tos.h linux-source-2.6.30/include/linux/netfilter_ipv4/ipt_ecn.h linux-source-2.6.30/include/linux/netfilter_ipv4/ipt_connmark.h linux-source-2.6.30/include/linux/netfilter_ipv4/ipt_dscp.h linux-source-2.6.30/include/linux/netfilter_ipv4/ipt_tcpmss.h linux-source-2.6.30/include/linux/netfilter_ipv4/ipt_mark.h linux-source-2.6.30/net/netfilter/xt_tcpmss.c linux-source-2.6.30/net/netfilter/xt_connmark.c linux-source-2.6.30/net/netfilter/xt_mark.c linux-source-2.6.30/net/netfilter/xt_dscp.c linux-source-2.6.30/net/netfilter/xt_rateest.c linux-source-2.6.30/net/netfilter/xt_hl.c linux-source-2.6.30/net/ipv4/netfilter/ipt_ecn.c linux-source-2.6.30/documentation/io-mapping.txt
And the script, if you'd like to run it yourself, is as follows (hereby released GPL2): #!/bin/bash
#set -x
SQLITE3=`which sqlite3` DBNAME=filenames.db SQLFILE=filenames.sql
DIRECTORY=linux-source-2.6.30
$SQLITE3 $DBNAME "CREATE TABLE filenames ( id INTEGER PRIMARY KEY, name TEXT );"
echo "PRAGMA synchronous=OFF;" >$SQLFILE echo "BEGIN TRANSACTION;" >>$SQLFILE find $DIRECTORY | tr '[:upper:]' '[:lower:]' | sed 's/^\(.*\)/INSERT INTO filenames (name) VALUES ("\1");/' >>$SQLFILE echo "COMMIT;" >>$SQLFILE
$SQLITE3 $DBNAME <$SQLFILE
$SQLITE3 $DBNAME "SELECT a.name FROM filenames a, filenames b WHERE a.name == b.name AND a.id < b.id;"
rm $SQLFILE rm $DBNAME
| |