From dcb7b51aee329a3c209a2fba6593fccd94562db7 Mon Sep 17 00:00:00 2001 From: "ccarlen@netscape.com" Date: Wed, 17 Jan 2001 20:23:06 +0000 Subject: [PATCH] Bug 54008 - nsIFile::MoveTo doesn't work according to API on Mac. r=sdagley, sr=sfraser --- xpcom/io/nsLocalFileMac.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/xpcom/io/nsLocalFileMac.cpp b/xpcom/io/nsLocalFileMac.cpp index 7e88b48d735a..4056dafbf9f9 100644 --- a/xpcom/io/nsLocalFileMac.cpp +++ b/xpcom/io/nsLocalFileMac.cpp @@ -1390,24 +1390,34 @@ nsLocalFile::GetPath(char **_retval) nsresult nsLocalFile::MoveCopy( nsIFile* newParentDir, const char* newName, PRBool isCopy ) { - nsresult rv = ResolveAndStat( PR_TRUE ); + nsresult rv = ResolveAndStat( PR_TRUE ); if ( NS_FAILED( rv ) ) return rv; + + OSErr macErr; + FSSpec srcSpec = mResolvedSpec; + Str255 newPascalName; + + // If newParentDir == nsnull, it's a simple rename + if ( !newParentDir ) + { + NS_ENSURE_ARG( newName ); + myPLstrncpy( newPascalName, newName, 255 ); + macErr = ::FSpRename( &srcSpec, newPascalName ); + return MacErrorMapper( macErr ); + } + nsCOMPtr destDir( do_QueryInterface( newParentDir )); + FSSpec destSpec; PRBool isDirectory; rv = newParentDir->IsDirectory( &isDirectory ); if ( NS_FAILED( rv ) ) return rv; - FSSpec srcSpec; - FSSpec destSpec; - srcSpec = mResolvedSpec; rv = destDir->GetResolvedFSSpec( &destSpec ); if ( NS_FAILED( rv ) ) return rv; - OSErr macErr; - Str255 newPascalName; if ( newName ) myPLstrncpy( newPascalName, newName, 255); else