VGMStream: Fix .txtp with option fragments in the filename
parent
4298a232fc
commit
3f6cb1bc1c
|
@ -31,13 +31,22 @@
|
||||||
|
|
||||||
+ (NSArray *)urlsForContainerURL:(NSURL *)url
|
+ (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];
|
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);
|
VGMSTREAM * stream = init_vgmstream_from_cogfile([path UTF8String], 0);
|
||||||
if (!stream)
|
if (!stream)
|
||||||
{
|
{
|
||||||
|
|
|
@ -96,6 +96,16 @@ STREAMFILE *cogsf_create_from_path(const char *path) {
|
||||||
NSString * urlString = [NSString stringWithUTF8String:path];
|
NSString * urlString = [NSString stringWithUTF8String:path];
|
||||||
NSURL * url = [NSURL URLWithDataRepresentation:[urlString dataUsingEncoding:NSUTF8StringEncoding] relativeToURL:nil];
|
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);
|
return cogsf_create_from_url(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue