Added Path::GetFilenameWithoutExt, and fixed some other PathUtil API layouts.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@692 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-03-05 21:06:29 +00:00
parent a09157ab59
commit 8614bbd0f8
2 changed files with 26 additions and 12 deletions

View File

@ -191,27 +191,40 @@ string ReplaceFilename( const string& src, const string& newfilename )
if( !newfilename.empty() ) if( !newfilename.empty() )
{ {
dest += '.'; dest += Separator;
dest += newfilename; dest += newfilename;
} }
return dest; return dest;
} }
void GetFilename( const string& src, string& dest ) string GetFilename( const string& src )
{ {
int pos = _findFilenamePosition( src ); int pos = _findFilenamePosition( src );
dest.assign( src.begin()+pos, src.end() ); return string( src.begin()+pos, src.end() );
} }
void GetDirectory( const string& src, string& dest ) string GetFilenameWithoutExt( const string& src )
{
string fname( GetFilename( src ) );
int pos = fname.find_last_of( '.' );
if( pos == string::npos || pos == 0 )
return fname;
else
return string( fname.begin(), fname.begin()+pos );
}
string GetDirectory( const string& src )
{ {
int pos = _findFilenamePosition( src ); int pos = _findFilenamePosition( src );
if( pos == 0 ) if( pos == 0 )
dest.clear(); return string();
else else
dest.assign( src.begin(), src.begin()+pos ); return string( src.begin(), src.begin()+pos );
} }
// This function mimics the old ANSI C splitpath function. It's more or less superceeded
// by one of the many other Path utility functions, but someone might find it useful.
void Split( const string& src, string& destpath, string& destfile ) void Split( const string& src, string& destpath, string& destfile )
{ {
int pos = _findFilenamePosition( src ); int pos = _findFilenamePosition( src );
@ -230,13 +243,13 @@ void Split( const string& src, string& destpath, string& destfile )
// Assigns the base/root directory of the given path into dest. // Assigns the base/root directory of the given path into dest.
// Example /this/that/something.txt -> dest == "/" // Example /this/that/something.txt -> dest == "/"
void GetRootDirectory( const string& src, string& dest ) string GetRootDirectory( const string& src )
{ {
int pos = src.find_first_of( Delimiters ); int pos = src.find_first_of( Delimiters );
if( pos == string::npos ) if( pos == string::npos )
dest.clear(); return string();
else else
dest.assign( src.begin(), src.begin()+pos ); return string( src.begin(), src.begin()+pos );
} }
void CreateDirectory( const string& src ) void CreateDirectory( const string& src )

View File

@ -34,9 +34,10 @@ namespace Path
extern std::string Combine( const std::string& srcPath, const std::string& srcFile ); extern std::string Combine( const std::string& srcPath, const std::string& srcFile );
extern std::string ReplaceExtension( const std::string& src, const std::string& ext ); extern std::string ReplaceExtension( const std::string& src, const std::string& ext );
extern std::string ReplaceFilename( const std::string& src, const std::string& newfilename ); extern std::string ReplaceFilename( const std::string& src, const std::string& newfilename );
extern void GetFilename( const std::string& src, std::string& dest ); extern std::string GetFilename( const std::string& src );
extern void GetDirectory( const std::string& src, std::string& dest ); extern std::string GetDirectory( const std::string& src );
extern void GetRootDirectory( const std::string& src, std::string& dest ); extern std::string GetFilenameWithoutExt( const string& src );
extern std::string GetRootDirectory( const std::string& src );
extern void Split( const std::string& src, std::string& destpath, std::string& destfile ); extern void Split( const std::string& src, std::string& destpath, std::string& destfile );
extern void CreateDirectory( const std::string& src ); extern void CreateDirectory( const std::string& src );