From 2a64220e5071550bfee6cb9b97d7a4ae9eeb642a Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 21 Dec 2003 02:20:53 +0000 Subject: [PATCH] cleanup --- stepmania/src/RageFile.cpp | 58 ---------------------------- stepmania/src/RageFile.h | 5 --- stepmania/src/RageUtil.cpp | 79 ++++++++++++++++++++++++++++---------- stepmania/src/RageUtil.h | 8 +++- 4 files changed, 64 insertions(+), 86 deletions(-) diff --git a/stepmania/src/RageFile.cpp b/stepmania/src/RageFile.cpp index d34c959ef8..27bf7e8539 100644 --- a/stepmania/src/RageFile.cpp +++ b/stepmania/src/RageFile.cpp @@ -17,64 +17,6 @@ #include "RageUtil.h" #include "RageFileDriver.h" -void FixSlashesInPlace( CString &sPath ) -{ - for( unsigned i = 0; i < sPath.size(); ++i ) - if( sPath[i] == '\\' ) - sPath[i] = '/'; -} - -CString FixSlashes( CString sPath ) -{ - FixSlashesInPlace( sPath ); - return sPath; -} - -/* - * Keep trailing slashes, since that can be used to illustrate that a path always - * represents a directory. Not sure if we should always keep leading "." (we do - * because it's simpler), but be sure to keep the "." if it's all that's there, so - * collapsing "." doesn't result in "". - * - * foo/bar -> foo/bar - * foo/bar/ -> foo/bar/ - * foo///bar/// -> foo/bar/ - * foo/bar/./baz -> foo/bar/baz - * foo/bar/../baz -> foo/baz - * ./foo -> foo - * ./ -> . - * ./// -> . - */ - -void CollapsePath( CString &sPath ) -{ - /* Don't ignore empty: we do want to keep trailing slashes. */ - CStringArray as; - split( sPath, "/", as, false ); - - for( unsigned i=0; i "foo/bar/". */ - as.erase( as.begin()+i ); - i -= 1; - } - else if( as[i] == "." && i != 0 ) - { - as.erase( as.begin()+i ); - i -= 1; - } - } - sPath = join( "/", as ); -} - RageFile::RageFile() { m_File = NULL; diff --git a/stepmania/src/RageFile.h b/stepmania/src/RageFile.h index 8d5dffde68..b981ed19fa 100644 --- a/stepmania/src/RageFile.h +++ b/stepmania/src/RageFile.h @@ -14,11 +14,6 @@ ----------------------------------------------------------------------------- */ -// call FixSlashes on any path that came from the user -void FixSlashesInPlace( CString &sPath ); -CString FixSlashes( CString sPath ); -void CollapsePath( CString &sPath ); - class RageFileObj; class RageFile diff --git a/stepmania/src/RageUtil.cpp b/stepmania/src/RageUtil.cpp index a6e9fa4aaa..9e7dbc3774 100644 --- a/stepmania/src/RageUtil.cpp +++ b/stepmania/src/RageUtil.cpp @@ -898,27 +898,6 @@ void Replace_Unicode_Markers( CString &Text ) } } -void ReplaceText( CString &Text, const map &m ) -{ - basic_string txt(Text); - - for(map::const_iterator it = m.begin(); it != m.end(); ++it) - { - unsigned start = 0; - while(1) - { - unsigned pos = txt.find(it->first, start); - if(pos == txt.npos) - break; - - txt.replace(pos, it->first.size(), it->second); - start = pos+it->second.size(); - } - } - - Text = txt.c_str(); -} - /* Form a string to identify a wchar_t with ASCII. */ CString WcharDisplayText(wchar_t c) { @@ -1005,6 +984,64 @@ char char_traits_char_nocase::uptab[256] = '\xF0','\xF1','\xF2','\xF3','\xF4','\xF5','\xF6','\xF7','\xF8','\xF9','\xFA','\xFB','\xFC','\xFD','\xFE','\xFF', }; +void FixSlashesInPlace( CString &sPath ) +{ + for( unsigned i = 0; i < sPath.size(); ++i ) + if( sPath[i] == '\\' ) + sPath[i] = '/'; +} + +CString FixSlashes( CString sPath ) +{ + FixSlashesInPlace( sPath ); + return sPath; +} + +/* + * Keep trailing slashes, since that can be used to illustrate that a path always + * represents a directory. Not sure if we should always keep leading "." (we do + * because it's simpler), but be sure to keep the "." if it's all that's there, so + * collapsing "." doesn't result in "". + * + * foo/bar -> foo/bar + * foo/bar/ -> foo/bar/ + * foo///bar/// -> foo/bar/ + * foo/bar/./baz -> foo/bar/baz + * foo/bar/../baz -> foo/baz + * ./foo -> foo + * ./ -> . + * ./// -> . + */ + +void CollapsePath( CString &sPath ) +{ + /* Don't ignore empty: we do want to keep trailing slashes. */ + CStringArray as; + split( sPath, "/", as, false ); + + for( unsigned i=0; i "foo/bar/". */ + as.erase( as.begin()+i ); + i -= 1; + } + else if( as[i] == "." && i != 0 ) + { + as.erase( as.begin()+i ); + i -= 1; + } + } + sPath = join( "/", as ); +} + // // Helper function for reading/writing scores diff --git a/stepmania/src/RageUtil.h b/stepmania/src/RageUtil.h index 1d329691ae..590ee714a7 100644 --- a/stepmania/src/RageUtil.h +++ b/stepmania/src/RageUtil.h @@ -13,7 +13,6 @@ */ #include -#include "RageFile.h" //----------------------------------------------------------------------------- // SAFE_ Macros @@ -227,7 +226,6 @@ public: void Replace_Unicode_Markers( CString &Text ); -void ReplaceText( CString &Text, const map &m ); CString WcharDisplayText(wchar_t c); CString Basename( const CString &dir ); @@ -292,10 +290,16 @@ bool ResolvePath(CString &path); unsigned GetFileSizeInBytes( const CString &sFilePath ); void FlushDirCache(); +// call FixSlashes on any path that came from the user +void FixSlashesInPlace( CString &sPath ); +CString FixSlashes( CString sPath ); +void CollapsePath( CString &sPath ); + // helper file functions used by Bookkeeper and ProfileManager // // Helper function for reading/writing scores // +class RageFile; bool FileRead(RageFile& f, CString& sOut); bool FileRead(RageFile& f, int& iOut); bool FileRead(RageFile& f, unsigned& uOut);