[pmwiki-users] Re: case-insensitive file names (Was: How use lowercase in Group Names)

Patrick R. Michaud pmichaud at pobox.com
Thu Sep 29 10:04:12 CDT 2005


On Thu, Sep 29, 2005 at 04:22:43PM +0200, chr at home.se wrote:
> Just out of curiosity, what did you think of appending an additional token
> that indicates the case?  I just realized a hyphen doesn't work since it's
> allowed in a page name, but a dot would. We'd then get these examples:
> 
>   Page			Case-bits 	(hex)	File name
>   main.abc		0000, 000 	0x00	main.abc.0
>   main.ABC		0000, 111 	0x07	main.abc.7
>   Main.Abc		1000, 100 	0x44	main.abc.44
>   Long.PageName		1000, 10001000	0x0111	long.pagename.111
>   LongGroup.LongerName	100010000, 1000001000  0x44208
> 						longgroup.longername.44208
> 
> It's kind of cute, but probably very confusing for someone looking at 
> wiki.d/  ;-)

It is very cute, and confusing.  I would probably order the bits
differently, so that character 0 of the name corresponds to bit 0,
character 1 with bit 1, etc.  Thus for the above I would probably end
up with:

                        cba. niam
   main.abc		0000 0000                 main.abc,x00
   main.ABC		1110 0000                 main.abc,xe0
   Main.Abc		0010 0001                 main.abc,x21

   Long.PageName	0 0010 0010 0001          long.pagename,x221
   LongGroup.LongerName	0001 0000 0100 0001 0001  longgroup.longername,x10411

But regardless of the bit sequence, this approach doesn't really
help us with case insensitivity -- we still go through the same
process.  For example, given a page name such as "Main.AbC", we
still look for a file exactly matching the case (i.e., "main.abc,xa1")
and if it's not found we do a scan of the directory looking for
any file that matches "main.abc,*".  So, we still have the directory
scan taking place in pretty much the same way as we would if
the files were stored as "Main.Abc".

Going the other way -- i.e., providing case sensitivity for
filesystems that don't have it -- an easier approach might be 
to place a special character in front of each letter that is
truly uppercase.  Thus (assuming underscore here):

    Main.Abc               "_Main._Abc"
    Main.ABC               "_Main._A_B_C"
    Long.PageName          "_Long._Page_Name"
    Long.Pagename          "_Long._Pagename"
    LongGroup.LongerName   "_Long_Group._Longer_Name"

But I don't imagine there will be much demand for case sensitive
page names, thus anything like this is *definitely* left to a Cookbook
recipe.  :-)

Pm




More information about the pmwiki-users mailing list