summaryrefslogtreecommitdiff
path: root/tools/source/fsys/dirent.cxx
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2012-01-21 15:21:16 +0100
committerStephan Bergmann <sbergman@redhat.com>2012-01-21 15:21:16 +0100
commit7c704c78d3c652504c064b4ac7af55a2c1ee49bb (patch)
tree623358cf25839219ef4fd90eea4f3eaa55389a1f /tools/source/fsys/dirent.cxx
parent0d5167915b47df7c3e450614ea50d845ba959df3 (diff)
Removed some unused parameters; added SAL_UNUSED_PARAMETER.
SAL_UNUSED_PARAMETER (expanding to __attribute__ ((unused)) for GCC) is used to annotate legitimately unused parameters, so that static analysis tools can tell legitimately unused parameters from truly unnecessary ones. To that end, some patches for external modules are also added, that are only applied when compiling with GCC and add necessary __attribute__ ((unused)) in headers.
Diffstat (limited to 'tools/source/fsys/dirent.cxx')
-rw-r--r--tools/source/fsys/dirent.cxx268
1 files changed, 115 insertions, 153 deletions
diff --git a/tools/source/fsys/dirent.cxx b/tools/source/fsys/dirent.cxx
index 2f726d03fe66..df3f16392a01 100644
--- a/tools/source/fsys/dirent.cxx
+++ b/tools/source/fsys/dirent.cxx
@@ -335,15 +335,9 @@ rtl::OString ImplCutPath( const rtl::OString& rStr, sal_Int32 nMax, char cAccDel
return aCutPath.makeStringAndClear();
}
-#if defined(WNT)
-/*************************************************************************
-|*
-|* DirEntry::ImpParseOs2Name()
-|*
-*************************************************************************/
-
-FSysError DirEntry::ImpParseOs2Name( const rtl::OString& rPfad, FSysPathStyle eStyle )
+FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
{
+#if defined(WNT)
DBG_CHKTHIS( DirEntry, ImpCheckDirEntry );
// die einzelnen Namen auf einen Stack packen
@@ -374,7 +368,7 @@ FSysError DirEntry::ImpParseOs2Name( const rtl::OString& rPfad, FSysPathStyle eS
if ( aPfad.GetChar(nPos) == '\\' || aPfad.GetChar(nPos) == '/' )
break;
aName = rtl::OUStringToOString(aPfad.Copy( 2, nPos-2 ), osl_getThreadTextEncoding());
- aStack.Push( new DirEntry( aName, FSYS_FLAG_ABSROOT, eStyle ) );
+ aStack.Push( new DirEntry( aName, FSYS_FLAG_ABSROOT ) );
}
// ist der Name die Root des aktuellen Drives?
else if ( nPos == 0 && aPfad.Len() > 0 &&
@@ -402,7 +396,7 @@ FSysError DirEntry::ImpParseOs2Name( const rtl::OString& rPfad, FSysPathStyle eS
return FSYS_ERR_MISPLACEDCHAR;
}
// Root-Directory des Drive
- aStack.Push( new DirEntry( aName, FSYS_FLAG_ABSROOT, eStyle ) );
+ aStack.Push( new DirEntry( aName, FSYS_FLAG_ABSROOT ) );
}
else
{
@@ -419,7 +413,7 @@ FSysError DirEntry::ImpParseOs2Name( const rtl::OString& rPfad, FSysPathStyle eS
// liegt jetzt nichts mehr auf dem Stack?
if ( aStack.Empty() )
- aStack.Push( new DirEntry( aName, FSYS_FLAG_RELROOT, eStyle ) );
+ aStack.Push( new DirEntry( aName, FSYS_FLAG_RELROOT ) );
}
}
@@ -459,7 +453,7 @@ FSysError DirEntry::ImpParseOs2Name( const rtl::OString& rPfad, FSysPathStyle eS
else
{
// normalen Entries kommen auf den Stack
- DirEntry *pNew = new DirEntry( aName, FSYS_FLAG_NORMAL, eStyle );
+ DirEntry *pNew = new DirEntry( aName, FSYS_FLAG_NORMAL );
if ( !pNew->IsValid() )
{
aName = rPfad;
@@ -512,27 +506,115 @@ FSysError DirEntry::ImpParseOs2Name( const rtl::OString& rPfad, FSysPathStyle eS
if ( nErr )
aName = rPfad;
return nErr;
-}
-#endif
+#else
+ DBG_CHKTHIS( DirEntry, ImpCheckDirEntry );
-/*************************************************************************
-|*
-|* DirEntry::ImpParseName()
-|*
-*************************************************************************/
+ // die einzelnen Namen auf einen Stack packen
+ DirEntryStack aStack;
+ rtl::OString aPfad(rPfad);
+ do
+ {
+ // den Namen vor dem ersten "/" abspalten,
+ // falls '/' am Anfang, ist der Name '/',
+ // der Rest immer ohne die fuehrenden '/'.
+ // den ersten '/' suchen
+ sal_uInt16 nPos;
+ for ( nPos = 0;
+ nPos < aPfad.getLength() && aPfad[nPos] != '/';
+ nPos++ )
+ /* do nothing */;
-FSysError DirEntry::ImpParseName( const rtl::OString& rbInitName,
- FSysPathStyle eStyle )
-{
- if ( eStyle == FSYS_STYLE_HOST )
- eStyle = DEFSTYLE;
+ // ist der Name die Root des aktuellen Drives?
+ if ( nPos == 0 && !aPfad.isEmpty() && ( aPfad[0] == '/' ) )
+ {
+ // Root-Directory des aktuellen Drives
+ aStack.Push( new DirEntry( FSYS_FLAG_ABSROOT ) );
+ }
+ else
+ {
+ // den Namen ohne Trenner abspalten
+ aName = aPfad.copy(0, nPos);
-#if defined(WNT)
- return ImpParseOs2Name( rbInitName, eStyle );
-#else
- return ImpParseUnixName( rbInitName, eStyle );
+ // stellt der Name die aktuelle Directory dar?
+ if ( aName == "." )
+ /* do nothing */;
+
+#ifdef UNX
+ // stellt der Name das User-Dir dar?
+ else if ( aName == "~" )
+ {
+ DirEntry aHome( String( (const char *) getenv( "HOME" ), osl_getThreadTextEncoding()) );
+ for ( sal_uInt16 n = aHome.Level(); n; --n )
+ aStack.Push( new DirEntry( aHome[ (sal_uInt16) n-1 ] ) );
+ }
#endif
+ // stellt der Name die Parent-Directory dar?
+ else if ( aName == ".." )
+ {
+ // ist nichts, ein Parent oder eine relative Root
+ // auf dem Stack?
+ if ( ( aStack.Empty() ) || ( aStack.Top()->eFlag == FSYS_FLAG_PARENT ) )
+ {
+ // fuehrende Parents kommen auf den Stack
+ aStack.Push( new DirEntry(rtl::OString(), FSYS_FLAG_PARENT) );
+ }
+ // ist es eine absolute Root
+ else if ( aStack.Top()->eFlag == FSYS_FLAG_ABSROOT )
+ {
+ // die hat keine Parent-Directory
+ return FSYS_ERR_NOTEXISTS;
+ }
+ else
+ // sonst hebt der Parent den TOS auf
+ delete aStack.Pop();
+ }
+ else
+ {
+ DirEntry *pNew = NULL;
+ // normalen Entries kommen auf den Stack
+ pNew = new DirEntry( aName, FSYS_FLAG_NORMAL );
+ if ( !pNew->IsValid() )
+ {
+ aName = rPfad;
+ ErrCode eErr = pNew->GetError();
+ delete pNew;
+ return eErr;
+ }
+ aStack.Push( pNew );
+ }
+ }
+
+ // den Restpfad bestimmen
+ aPfad = nPos < aPfad.getLength()
+ ? aPfad.copy(nPos + 1) : rtl::OString();
+ while ( !aPfad.isEmpty() && ( aPfad[0] == '/' ) )
+ aPfad = aPfad.copy(1);
+ }
+ while (!aPfad.isEmpty());
+
+ // Haupt-Entry (selbst) zuweisen
+ if ( aStack.Empty() )
+ {
+ eFlag = FSYS_FLAG_CURRENT;
+ aName = rtl::OString();
+ }
+ else
+ {
+ eFlag = aStack.Top()->eFlag;
+ aName = aStack.Top()->aName;
+ delete aStack.Pop();
+ }
+
+ // die Parent-Entries vom Stack holen
+ DirEntry** pTemp = &pParent;
+ while ( !aStack.Empty() )
+ {
+ *pTemp = aStack.Pop();
+ pTemp = &( (*pTemp)->pParent );
+ }
+ return FSYS_ERR_OK;
+#endif
}
/*************************************************************************
@@ -559,7 +641,7 @@ static FSysPathStyle GetStyle( FSysPathStyle eStyle )
|*
*************************************************************************/
-void DirEntry::ImpTrim( FSysPathStyle /* eStyle */ )
+void DirEntry::ImpTrim()
{
// Wildcards werden nicht geclipt
if ( ( aName.indexOf( '*' ) != -1 ) ||
@@ -588,8 +670,7 @@ void DirEntry::ImpTrim( FSysPathStyle /* eStyle */ )
|*
*************************************************************************/
-DirEntry::DirEntry( const rtl::OString& rName, DirEntryFlag eDirFlag,
- FSysPathStyle eStyle ) :
+DirEntry::DirEntry( const rtl::OString& rName, DirEntryFlag eDirFlag ) :
#ifdef FEAT_FSYS_DOUBLESPEED
pStat( 0 ),
#endif
@@ -601,7 +682,7 @@ DirEntry::DirEntry( const rtl::OString& rName, DirEntryFlag eDirFlag,
eFlag = eDirFlag;
nError = FSYS_ERR_OK;
- ImpTrim( eStyle );
+ ImpTrim();
}
/*************************************************************************
@@ -683,7 +764,7 @@ DirEntry::DirEntry( const String& rInitName, FSysPathStyle eStyle )
#endif
}
- nError = ImpParseName( aTmpName, eStyle );
+ nError = ImpParseName( aTmpName );
if ( nError != FSYS_ERR_OK )
eFlag = FSYS_FLAG_INVALID;
@@ -729,7 +810,7 @@ DirEntry::DirEntry( const rtl::OString& rInitName, FSysPathStyle eStyle )
}
#endif
- nError = ImpParseName( aTmpName, eStyle );
+ nError = ImpParseName( aTmpName );
if ( nError != FSYS_ERR_OK )
eFlag = FSYS_FLAG_INVALID;
@@ -1700,125 +1781,6 @@ const DirEntry &DirEntry::operator[]( sal_uInt16 nParentLevel ) const
return *pRes;
}
-#if !defined(WNT)
-/*************************************************************************
-|*
-|* DirEntry::ImpParseUnixName()
-|*
-*************************************************************************/
-
-FSysError DirEntry::ImpParseUnixName( const rtl::OString& rPfad, FSysPathStyle eStyle )
-{
- DBG_CHKTHIS( DirEntry, ImpCheckDirEntry );
-
- // die einzelnen Namen auf einen Stack packen
- DirEntryStack aStack;
- rtl::OString aPfad(rPfad);
- do
- {
- // den Namen vor dem ersten "/" abspalten,
- // falls '/' am Anfang, ist der Name '/',
- // der Rest immer ohne die fuehrenden '/'.
- // den ersten '/' suchen
- sal_uInt16 nPos;
- for ( nPos = 0;
- nPos < aPfad.getLength() && aPfad[nPos] != '/';
- nPos++ )
- /* do nothing */;
-
- // ist der Name die Root des aktuellen Drives?
- if ( nPos == 0 && !aPfad.isEmpty() && ( aPfad[0] == '/' ) )
- {
- // Root-Directory des aktuellen Drives
- aStack.Push( new DirEntry( FSYS_FLAG_ABSROOT ) );
- }
- else
- {
- // den Namen ohne Trenner abspalten
- aName = aPfad.copy(0, nPos);
-
- // stellt der Name die aktuelle Directory dar?
- if ( aName == "." )
- /* do nothing */;
-
-#ifdef UNX
- // stellt der Name das User-Dir dar?
- else if ( aName == "~" )
- {
- DirEntry aHome( String( (const char *) getenv( "HOME" ), osl_getThreadTextEncoding()) );
- for ( sal_uInt16 n = aHome.Level(); n; --n )
- aStack.Push( new DirEntry( aHome[ (sal_uInt16) n-1 ] ) );
- }
-#endif
- // stellt der Name die Parent-Directory dar?
- else if ( aName == ".." )
- {
- // ist nichts, ein Parent oder eine relative Root
- // auf dem Stack?
- if ( ( aStack.Empty() ) || ( aStack.Top()->eFlag == FSYS_FLAG_PARENT ) )
- {
- // fuehrende Parents kommen auf den Stack
- aStack.Push( new DirEntry(rtl::OString(), FSYS_FLAG_PARENT, eStyle) );
- }
- // ist es eine absolute Root
- else if ( aStack.Top()->eFlag == FSYS_FLAG_ABSROOT )
- {
- // die hat keine Parent-Directory
- return FSYS_ERR_NOTEXISTS;
- }
- else
- // sonst hebt der Parent den TOS auf
- delete aStack.Pop();
- }
- else
- {
- DirEntry *pNew = NULL;
- // normalen Entries kommen auf den Stack
- pNew = new DirEntry( aName, FSYS_FLAG_NORMAL, eStyle );
- if ( !pNew->IsValid() )
- {
- aName = rPfad;
- ErrCode eErr = pNew->GetError();
- delete pNew;
- return eErr;
- }
- aStack.Push( pNew );
- }
- }
-
- // den Restpfad bestimmen
- aPfad = nPos < aPfad.getLength()
- ? aPfad.copy(nPos + 1) : rtl::OString();
- while ( !aPfad.isEmpty() && ( aPfad[0] == '/' ) )
- aPfad = aPfad.copy(1);
- }
- while (!aPfad.isEmpty());
-
- // Haupt-Entry (selbst) zuweisen
- if ( aStack.Empty() )
- {
- eFlag = FSYS_FLAG_CURRENT;
- aName = rtl::OString();
- }
- else
- {
- eFlag = aStack.Top()->eFlag;
- aName = aStack.Top()->aName;
- delete aStack.Pop();
- }
-
- // die Parent-Entries vom Stack holen
- DirEntry** pTemp = &pParent;
- while ( !aStack.Empty() )
- {
- *pTemp = aStack.Pop();
- pTemp = &( (*pTemp)->pParent );
- }
-
- return FSYS_ERR_OK;
-}
-#endif
-
#define MAX_EXT_MAX 250
#define MAX_LEN_MAX 255
#define INVALID_CHARS_DEF "\\/\"':|^<>?*"