Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


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()
 |*
 *************************************************************************/

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.