--- Page-orig.py        2006-02-14 07:16:23.000000000 -0800
+++ Page.py     2006-02-14 07:27:21.000000000 -0800
@@ -69,6 +69,12 @@
         # None when pagename changes
 
         qpagename = wikiutil.quoteWikinameFS(page_name)
+        insensitive = self.get_fs_name_ignoring_case(qpagename)
+        if insensitive != qpagename:
+            qpagename = insensitive
+            # set page name with proper cases and spaces
+            self.page_name = wikiutil.unquoteWikiname(qpagename)
+
         self.page_name_fs = qpagename
 
         # the normal and the underlay path used for this page
@@ -106,6 +112,36 @@
         # to be reset when rev is created/deleted
         self._exists = [None, None]
 
+    def get_fs_name_ignoring_case(self, page_name):
+        """                                                                   
+        get the case sensitive path to "pagedir",
+        ignoring pagedir's case.
+        @param page_name: the page name to parse
+        @return: str page_name with proper case
+        """
+        
+        try:
+            if not self.cfg.case_insensitive_pagenames:
+                return page_name
+        except AttributeError:
+            return page_name
+
+        datadirs = [ self.cfg.data_dir, self.cfg.data_underlay_dir ]
+
+        # quit early if the page exists as given
+        for datadir in datadirs:
+            if not datadir == None:
+                if os.path.exists(os.path.join(datadir, "pages", page_name)):
+                    return page_name
+
+        for datadir in datadirs:
+            if not datadir == None:
+                for page in os.listdir( os.path.join( datadir, "pages" ) ):
+                    if page.lower() == page_name.lower():
+                        return page
+        return page_name
+
+
     def get_current_from_pagedir(self, pagedir):
         """ get the current revision number from an arbitrary pagedir.
             does not modify page object's state, uncached, direct disk access.

