diff options
author | sj <sj@openoffice.org> | 2010-08-13 15:02:26 +0200 |
---|---|---|
committer | sj <sj@openoffice.org> | 2010-08-13 15:02:26 +0200 |
commit | e91eb75f9e7f7788e648a0d270f2166222ed54ab (patch) | |
tree | 1d3724109b0dd67b4f0a7930fd4f6bc03b6cd353 /fpicker/source/aqua/NSURL_OOoAdditions.mm | |
parent | e316ce7a8f784231ff39bb069ec6eac0aefca9ce (diff) | |
parent | 0e6f37318dd855bd04e3281435d1af751398c98f (diff) |
impress186: merge with DEV300m86
Diffstat (limited to 'fpicker/source/aqua/NSURL_OOoAdditions.mm')
-rw-r--r-- | fpicker/source/aqua/NSURL_OOoAdditions.mm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/fpicker/source/aqua/NSURL_OOoAdditions.mm b/fpicker/source/aqua/NSURL_OOoAdditions.mm index 56fc198650c8..ecc38b7e232b 100644 --- a/fpicker/source/aqua/NSURL_OOoAdditions.mm +++ b/fpicker/source/aqua/NSURL_OOoAdditions.mm @@ -80,3 +80,33 @@ return sResult; } @end + +NSString* resolveAlias( NSString* i_pSystemPath ) +{ + NSString* pResolvedPath = nil; + CFURLRef rUrl = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, + (CFStringRef)i_pSystemPath, + kCFURLPOSIXPathStyle, false); + if( rUrl != NULL ) + { + FSRef rFS; + if( CFURLGetFSRef( rUrl, &rFS ) ) + { + MacOSBoolean bIsFolder = false; + MacOSBoolean bAlias = false; + OSErr err = FSResolveAliasFile( &rFS, true, &bIsFolder, &bAlias); + if( (err == noErr) && bAlias ) + { + CFURLRef rResolvedUrl = CFURLCreateFromFSRef( kCFAllocatorDefault, &rFS ); + if( rResolvedUrl != NULL ) + { + pResolvedPath = (NSString*)CFURLCopyFileSystemPath( rResolvedUrl, kCFURLPOSIXPathStyle ); + CFRelease( rResolvedUrl ); + } + } + } + CFRelease( rUrl ); + } + + return pResolvedPath; +} |