VGMStream: Fix .txtp with option fragments in the filename
parent
4298a232fc
commit
3f6cb1bc1c
|
@ -31,13 +31,22 @@
|
|||
|
||||
+ (NSArray *)urlsForContainerURL:(NSURL *)url
|
||||
{
|
||||
if ([url fragment]) {
|
||||
// input url already has fragment defined - no need to expand further
|
||||
return [NSMutableArray arrayWithObject:url];
|
||||
}
|
||||
|
||||
NSString * path = [[url absoluteString] stringByRemovingPercentEncoding];
|
||||
|
||||
if ([url fragment]) {
|
||||
// input url might be a TXTP with fragment parameters, in which case
|
||||
// we need to parse that anyway
|
||||
NSString * frag = [url fragment];
|
||||
NSUInteger len = [frag length];
|
||||
if (len < 5 || ![[frag substringFromIndex:len - 5] isEqualToString:@".txtp"]) {
|
||||
// input url already has fragment defined - no need to expand further
|
||||
return [NSMutableArray arrayWithObject:url];
|
||||
}
|
||||
|
||||
path = [path stringByAppendingFormat:@"%%23%@", frag];
|
||||
url = [NSURL fileURLWithPath:[path stringByRemovingPercentEncoding]];
|
||||
}
|
||||
|
||||
VGMSTREAM * stream = init_vgmstream_from_cogfile([path UTF8String], 0);
|
||||
if (!stream)
|
||||
{
|
||||
|
|
|
@ -96,6 +96,16 @@ STREAMFILE *cogsf_create_from_path(const char *path) {
|
|||
NSString * urlString = [NSString stringWithUTF8String:path];
|
||||
NSURL * url = [NSURL URLWithDataRepresentation:[urlString dataUsingEncoding:NSUTF8StringEncoding] relativeToURL:nil];
|
||||
|
||||
if ([url fragment]) {
|
||||
// .TXTP fragments need an override here
|
||||
NSString * frag = [url fragment];
|
||||
NSUInteger len = [frag length];
|
||||
if (len > 5 && [[frag substringFromIndex:len - 5] isEqualToString:@".txtp"]) {
|
||||
urlString = [urlString stringByReplacingOccurrencesOfString:@"#" withString:@"%23"];
|
||||
url = [NSURL URLWithDataRepresentation:[urlString dataUsingEncoding:NSUTF8StringEncoding] relativeToURL:nil];
|
||||
}
|
||||
}
|
||||
|
||||
return cogsf_create_from_url(url);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue