[futurebasic] Re: [FB] The file name returns zero part 2

Message: < previous - next > : Reply : Subscribe : Cleanse
Home   : February 2011 : Group Archive : Group : All Groups

From: Ken Shmidheiser <kshmidheiser@...>
Date: Wed, 9 Feb 2011 04:54:21 -0500
This is more in keeping with RP's more robust extension checking:

include "ConsoleWindow"

BeginCFunction
CFStringRef CFStringCopyPathReplacingExtension( CFStringRef path, 
CFStringRef oldExtension, CFStringRef newExtension ) {
CFStringRef out;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
if ( [[[(NSString *)path pathExtension] lowercaseString] 
isEqualToString:[(NSString *)oldExtension lowercaseString]] )
{
NSString *temp = [[(NSString *)path stringByDeletingPathExtension] 
stringByAppendingPathExtension:(NSString *)newExtension];
out = CFStringCreateCopy( kCFAllocatorDefault, (CFStringRef)temp );
}
else
{
out = CFStringCreateCopy( kCFAllocatorDefault, path );
}
[pool drain];
return out;
}
EndC
toolbox fn CFStringCopyPathReplacingExtension( CFStringRef path, 
CFStringRef oldExtension, CFStringRef newExtension ) = CFStringRef

local fn PrintCFString( string as CFStringRef )
'~'1
dim as Str255   s

if ( string == 0 ) then exit fn
fn CFStringGetPascalString( string, @s, 256, _kCFStringEncodingMacRoman )
print s
end fn

// demo main

dim as CFStringRef name
name = fn CFStringCopyPathReplacingExtension( @"file0.csv", @"csv", 
@"abcd" ) // replaces
fn PrintCFString( name )
CFRelease( name )

name = fn CFStringCopyPathReplacingExtension( @"file1.CSV", @"csv", 
@"abcd" ) // replaces
fn PrintCFString( name )
CFRelease( name )

name = fn CFStringCopyPathReplacingExtension( @"someDir/file2.csv", 
@"csv", @"abcd" ) // replaces
fn PrintCFString( name )
CFRelease( name )

name = fn CFStringCopyPathReplacingExtension( @"file3.txt", @"csv", 
@"abcd" ) // no replacement
fn PrintCFString( name )
CFRelease( name )

name = fn CFStringCopyPathReplacingExtension( @"file4", @"csv", 
@"abcd" ) // no replacement
fn PrintCFString( name )
CFRelease( name )