On Tue, May 03, 2011 at 10:21:18AM +0200, Francois Tigeot wrote:
> On Tue, May 03, 2011 at 02:06:24AM -0600, Tor Lillqvist wrote:
> 
> > I mean, if we have code in there that assumes NTFS (and SMB) volumes are 
> > case insensitive (at least when accessed from Windows), we should 
> > definitely keep it that way, even if somebody might have toggled a registry 
> > value to change it. If somebody does that, they deserve what they get.
> 
> The code is overly complex and wrong in some cases. I was thinking of
> simplifying it by doing a simple compile-time check for WNT but this may not 
> be
> the best way.

Following a short discussion on IRC, I've decided to remove the bulk of the
code and use a single #if defined(WNT) check instead.

The attached patch is relative to libs-gui.

-- 
Francois Tigeot
diff --git a/tools/inc/tools/fsys.hxx b/tools/inc/tools/fsys.hxx
index 47ce264..e4ab76b 100644
--- a/tools/inc/tools/fsys.hxx
+++ b/tools/inc/tools/fsys.hxx
@@ -296,8 +296,6 @@ public:
                                    FSysPathStyle eParser = FSYS_STYLE_HOST );
                         ~DirEntry();
 
-    sal_Bool                           IsCaseSensitive (FSysPathStyle 
eFormatter = FSYS_STYLE_HOST) const;
-
     sal_uIntPtr                                GetError() const { return 
nError; }
     sal_Bool                           IsValid() const;
     DirEntryFlag               GetFlag() const { return eFlag; };
diff --git a/tools/source/fsys/dirent.cxx b/tools/source/fsys/dirent.cxx
index a557edb..625fc48 100644
--- a/tools/source/fsys/dirent.cxx
+++ b/tools/source/fsys/dirent.cxx
@@ -1662,13 +1662,12 @@ sal_Bool DirEntry::ImpToRel( String aCurStr )
     aThis.ToAbs();
     String aThisStr( aThis.GetFull( FSYS_STYLE_HPFS ) );
 
-    // #109512 preserve case of path even if caseinsensitive
+    // preserve case of path even if caseinsensitive
     String aThisCompareStr( aThisStr ), aCurCompareStr( aCurStr );
-    if ( ! IsCaseSensitive() )
-    {
+    #if defined(WNT)
         aThisCompareStr.ToLowerAscii();
         aCurCompareStr.ToLowerAscii();
-    }
+    #endif
 
     // "Ubereinstimmung pr"ufen
     sal_uInt16 nPos = aThisCompareStr.Match( aCurCompareStr );
diff --git a/tools/source/fsys/unx.cxx b/tools/source/fsys/unx.cxx
index a2eba54..90c7a94 100644
--- a/tools/source/fsys/unx.cxx
+++ b/tools/source/fsys/unx.cxx
@@ -191,81 +191,6 @@ static sal_Bool GetMountEntry(dev_t dev, struct mymnttab 
*mytab)
 
 #endif
 
-/************************************************************************
-|*
-|*    DirEntry::IsCaseSensitive()
-|*
-*************************************************************************/
-
-sal_Bool DirEntry::IsCaseSensitive( FSysPathStyle eFormatter ) const
-{
-
-    if (eFormatter==FSYS_STYLE_HOST)
-    {
-#if defined(NETBSD) || defined(DRAGONFLY)
-        return sal_True;
-#else
-        struct stat buf;
-        DirEntry aPath(*this);
-        aPath.ToAbs();
-
-        while (stat (ByteString(aPath.GetFull(), 
osl_getThreadTextEncoding()).GetBuffer(), &buf))
-        {
-            if (aPath.Level() == 1)
-            {
-                return sal_True;       // ich bin unter UNIX, also ist der 
default im Zweifelsfall case sensitiv
-            }
-            aPath = aPath [1];
-        }
-
-        struct mymnttab fsmnt;
-        GetMountEntry(buf.st_dev, &fsmnt);
-        if ((fsmnt.mymnttab_filesystem.CompareTo("msdos")==COMPARE_EQUAL) ||
-            (fsmnt.mymnttab_filesystem.CompareTo("umsdos")==COMPARE_EQUAL) ||
-            (fsmnt.mymnttab_filesystem.CompareTo("vfat")==COMPARE_EQUAL) ||
-            (fsmnt.mymnttab_filesystem.CompareTo("hpfs")==COMPARE_EQUAL) ||
-            (fsmnt.mymnttab_filesystem.CompareTo("smb")        
==COMPARE_EQUAL) ||
-            (fsmnt.mymnttab_filesystem.CompareTo("ncpfs")==COMPARE_EQUAL))
-        {
-            return sal_False;
-        }
-        else
-        {
-            return sal_True;
-        }
-#endif
-    }
-    else
-    {
-        sal_Bool isCaseSensitive = sal_True;   // ich bin unter UNIX, also ist 
der default im Zweifelsfall case sensitiv
-        switch ( eFormatter )
-        {
-            case FSYS_STYLE_MAC:
-            case FSYS_STYLE_FAT:
-            case FSYS_STYLE_VFAT:
-            case FSYS_STYLE_NTFS:
-            case FSYS_STYLE_NWFS:
-            case FSYS_STYLE_HPFS:
-                {
-                    isCaseSensitive = sal_False;
-                    break;
-                }
-            case FSYS_STYLE_SYSV:
-            case FSYS_STYLE_BSD:
-            case FSYS_STYLE_DETECT:
-                {
-                    isCaseSensitive = sal_True;
-                    break;
-                }
-            default:
-                {
-                    isCaseSensitive = sal_True;        // ich bin unter UNIX, 
also ist der default im Zweifelsfall case sensitiv
-                    break;
-                }
-        }
-        return isCaseSensitive;
-    }
-}
 
 /************************************************************************
 |*
diff --git a/tools/source/fsys/wntmsc.cxx b/tools/source/fsys/wntmsc.cxx
index cfe64bea..bfe7a3c 100644
--- a/tools/source/fsys/wntmsc.cxx
+++ b/tools/source/fsys/wntmsc.cxx
@@ -169,91 +169,6 @@ FSysPathStyle DirEntry::GetPathStyle( const String 
&rDevice )
 
 /*************************************************************************
 |*
-|*    DirEntry::IsCaseSensitive()
-|*
-*************************************************************************/
-
-sal_Bool DirEntry::IsCaseSensitive( FSysPathStyle eFormatter ) const
-{
-
-    if (eFormatter==FSYS_STYLE_HOST)
-    {
-/*
-        DirEntry            aRoot(*this);
-        aRoot.ToAbs();
-        aRoot =             aRoot[Level()-1];
-        String aRootDir =   aRoot.GetFull(FSYS_STYLE_HOST, sal_True);
-
-        char sVolumeName[256];
-        DWORD nVolumeSerial;
-        DWORD nMaxCompLen;
-        DWORD nFlags;
-        char sFileSysName[16];
-
-        if ( GetVolumeInformation(  (char*) aRootDir.GetStr(),
-                                    sVolumeName,
-                                    256,
-                                    (LPDWORD) &nVolumeSerial,
-                                    (LPDWORD) &nMaxCompLen,
-                                    (LPDWORD) &nFlags,
-                                    sFileSysName,
-                                    16 ))
-        {
-            return (nFlags & FS_CASE_SENSITIVE) ? sal_True : sal_False;
-        }
-        else
-        {
-            return sal_False;
-        }
-*/
-        //
-        // guter versuch, aber FS_CASE_SENSITIVE ist D?nnsinn in T?ten:
-        //
-        // sFileSysName     FS_CASE_SENSITIVE
-        // FAT              sal_False
-        // NTFS             sal_True !!!
-        // NWCompat         sal_False
-        // Samba            sal_False
-        //
-        // NT spricht auch NTFS lediglich case preserving an, also ist unter 
NT alles case insensitiv
-        //
-
-        return sal_False;
-    }
-    else
-    {
-        sal_Bool isCaseSensitive = sal_False;   // ich bin unter win32, also 
ist der default case insensitiv
-        switch ( eFormatter )
-        {
-            case FSYS_STYLE_MAC:
-            case FSYS_STYLE_FAT:
-            case FSYS_STYLE_VFAT:
-            case FSYS_STYLE_NTFS:
-            case FSYS_STYLE_NWFS:
-            case FSYS_STYLE_HPFS:
-            case FSYS_STYLE_DETECT:
-                {
-                    isCaseSensitive = sal_False;
-                    break;
-                }
-            case FSYS_STYLE_SYSV:
-            case FSYS_STYLE_BSD:
-                {
-                    isCaseSensitive = sal_True;
-                    break;
-                }
-            default:
-                {
-                    isCaseSensitive = sal_False;    // ich bin unter win32, 
also ist der default case insensitiv
-                    break;
-                }
-        }
-        return isCaseSensitive;
-    }
-}
-
-/*************************************************************************
-|*
 |*    DirEntry::ToAbs()
 |*
 *************************************************************************/
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to