diff --git a/Plugins/CueSheet/CueSheet.m b/Plugins/CueSheet/CueSheet.m index 5e36b3f6d..e00939b96 100644 --- a/Plugins/CueSheet/CueSheet.m +++ b/Plugins/CueSheet/CueSheet.m @@ -26,13 +26,22 @@ NSMutableString *unixPath = [path mutableCopy]; + //Get the fragment NSString *fragment = @""; - NSRange fragmentRange = [path rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"#0123456789"] options:(NSAnchoredSearch | NSBackwardsSearch)]; - if (fragmentRange.location != NSNotFound) - { - fragment = [unixPath substringWithRange:fragmentRange]; - [unixPath deleteCharactersInRange:fragmentRange]; + NSScanner *scanner = [NSScanner scannerWithString:unixPath]; + NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"#1234567890"]; + while (![scanner isAtEnd]) { + NSString *possibleFragment; + [scanner scanUpToString:@"#" intoString:nil]; + + if ([scanner scanCharactersFromSet:characterSet intoString:&possibleFragment] && [scanner isAtEnd]) + { + fragment = possibleFragment; + [unixPath deleteCharactersInRange:NSMakeRange([scanner scanLocation] - [possibleFragment length], [possibleFragment length])]; + break; + } } + NSLog(@"Fragment: %@", fragment); if (![unixPath hasPrefix:@"/"]) { //Only relative paths would have windows backslashes. @@ -49,6 +58,7 @@ + - (void)parseFile:(NSString *)filename { NSError *error = nil; diff --git a/Plugins/M3u/M3uContainer.m b/Plugins/M3u/M3uContainer.m index 58dbc6ee3..ce2047f91 100644 --- a/Plugins/M3u/M3uContainer.m +++ b/Plugins/M3u/M3uContainer.m @@ -31,13 +31,22 @@ NSMutableString *unixPath = [path mutableCopy]; + //Get the fragment NSString *fragment = @""; - NSRange fragmentRange = [path rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"#0123456789"] options:(NSAnchoredSearch | NSBackwardsSearch)]; - if (fragmentRange.location != NSNotFound) - { - fragment = [unixPath substringWithRange:fragmentRange]; - [unixPath deleteCharactersInRange:fragmentRange]; + NSScanner *scanner = [NSScanner scannerWithString:unixPath]; + NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"#1234567890"]; + while (![scanner isAtEnd]) { + NSString *possibleFragment; + [scanner scanUpToString:@"#" intoString:nil]; + + if ([scanner scanCharactersFromSet:characterSet intoString:&possibleFragment] && [scanner isAtEnd]) + { + fragment = possibleFragment; + [unixPath deleteCharactersInRange:NSMakeRange([scanner scanLocation] - [possibleFragment length], [possibleFragment length])]; + break; + } } + NSLog(@"Fragment: %@", fragment); if (![unixPath hasPrefix:@"/"]) { //Only relative paths would have windows backslashes. diff --git a/Plugins/Pls/PlsContainer.m b/Plugins/Pls/PlsContainer.m index e64545870..077d7ad9d 100644 --- a/Plugins/Pls/PlsContainer.m +++ b/Plugins/Pls/PlsContainer.m @@ -31,13 +31,22 @@ NSMutableString *unixPath = [path mutableCopy]; + //Get the fragment NSString *fragment = @""; - NSRange fragmentRange = [path rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"#0123456789"] options:(NSAnchoredSearch | NSBackwardsSearch)]; - if (fragmentRange.location != NSNotFound) - { - fragment = [unixPath substringWithRange:fragmentRange]; - [unixPath deleteCharactersInRange:fragmentRange]; + NSScanner *scanner = [NSScanner scannerWithString:unixPath]; + NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"#1234567890"]; + while (![scanner isAtEnd]) { + NSString *possibleFragment; + [scanner scanUpToString:@"#" intoString:nil]; + + if ([scanner scanCharactersFromSet:characterSet intoString:&possibleFragment] && [scanner isAtEnd]) + { + fragment = possibleFragment; + [unixPath deleteCharactersInRange:NSMakeRange([scanner scanLocation] - [possibleFragment length], [possibleFragment length])]; + break; + } } + NSLog(@"Fragment: %@", fragment); if (![unixPath hasPrefix:@"/"]) { //Only relative paths would have windows backslashes.