Bug 27857 - nsIFile not complete on Mac. Adding CopyToFollowingLinks(). r=sdagley@netscape.com, sr=sfraser@netscape.com
git-svn-id: svn://10.0.0.236/trunk@87987 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
22ffc2d35a
commit
395017ccda
@ -1389,16 +1389,21 @@ nsLocalFile::GetPath(char **_retval)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsLocalFile::MoveCopy( nsIFile* newParentDir, const char* newName, PRBool isCopy )
|
||||
nsresult nsLocalFile::MoveCopy( nsIFile* newParentDir, const char* newName, PRBool isCopy, PRBool followLinks )
|
||||
{
|
||||
nsresult rv = ResolveAndStat( PR_TRUE );
|
||||
if ( NS_FAILED( rv ) )
|
||||
return rv;
|
||||
|
||||
OSErr macErr;
|
||||
FSSpec srcSpec = mResolvedSpec;
|
||||
FSSpec srcSpec;
|
||||
Str255 newPascalName;
|
||||
|
||||
if (followLinks)
|
||||
srcSpec = mTargetSpec;
|
||||
else
|
||||
srcSpec = mResolvedSpec;
|
||||
|
||||
// If newParentDir == nsnull, it's a simple rename
|
||||
if ( !newParentDir )
|
||||
{
|
||||
@ -1407,15 +1412,19 @@ nsresult nsLocalFile::MoveCopy( nsIFile* newParentDir, const char* newName, PRBo
|
||||
macErr = ::FSpRename( &srcSpec, newPascalName );
|
||||
return MacErrorMapper( macErr );
|
||||
}
|
||||
|
||||
PRBool isDirectory;
|
||||
rv = newParentDir->IsDirectory( &isDirectory );
|
||||
if ( NS_FAILED( rv ) || !isDirectory )
|
||||
return NS_ERROR_FILE_DESTINATION_NOT_DIR;
|
||||
|
||||
nsCOMPtr<nsILocalFileMac> destDir( do_QueryInterface( newParentDir ));
|
||||
FSSpec destSpec;
|
||||
|
||||
PRBool isDirectory;
|
||||
rv = newParentDir->IsDirectory( &isDirectory );
|
||||
if ( NS_FAILED( rv ) )
|
||||
return rv;
|
||||
rv = destDir->GetResolvedFSSpec( &destSpec );
|
||||
if (followLinks)
|
||||
rv = destDir->GetTargetFSSpec( &destSpec );
|
||||
else
|
||||
rv = destDir->GetResolvedFSSpec( &destSpec ); // If resolved spec is an alias file, we'll rightly fail
|
||||
if ( NS_FAILED( rv ) )
|
||||
return rv;
|
||||
|
||||
@ -1448,19 +1457,19 @@ nsresult nsLocalFile::MoveCopy( nsIFile* newParentDir, const char* newName, PRBo
|
||||
NS_IMETHODIMP
|
||||
nsLocalFile::CopyTo(nsIFile *newParentDir, const char *newName)
|
||||
{
|
||||
return MoveCopy( newParentDir, newName, PR_TRUE );
|
||||
return MoveCopy( newParentDir, newName, PR_TRUE, PR_FALSE );
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsLocalFile::CopyToFollowingLinks(nsIFile *newParentDir, const char *newName)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
return MoveCopy( newParentDir, newName, PR_TRUE, PR_TRUE );
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsLocalFile::MoveTo(nsIFile *newParentDir, const char *newName)
|
||||
{
|
||||
return MoveCopy( newParentDir, newName, PR_FALSE );
|
||||
return MoveCopy( newParentDir, newName, PR_FALSE, PR_FALSE );
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
||||
@ -94,7 +94,7 @@ protected:
|
||||
nsresult TestFinderFlag(PRUint16 flagMask, PRBool *outFlagSet, PRBool testTargetSpec = PR_TRUE);
|
||||
|
||||
OSErr GetTargetSpecCatInfo(CInfoPBRec& outInfo);
|
||||
nsresult MoveCopy( nsIFile* newParentDir, const char* newName, PRBool isCopy );
|
||||
nsresult MoveCopy( nsIFile* newParentDir, const char* newName, PRBool isCopy, PRBool followLinks );
|
||||
|
||||
// Passing nsnull for the extension uses leaf name
|
||||
nsresult SetOSTypeAndCreatorFromExtension(const char* extension = nsnull);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user