[Fuse-for-macosx-commits] SF.net SVN: fuse-for-macosx:[644] trunk/FuseImporter/ LibspectrumMetadata
Brought to you by:
fredm
From: <fr...@us...> - 2010-08-06 13:51:59
|
Revision: 644 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=644&view=rev Author: fredm Date: 2010-08-06 13:51:53 +0000 (Fri, 06 Aug 2010) Log Message: ----------- Switch to new de-facto character encoding for TZX blocks from WoS. Modified Paths: -------------- trunk/FuseImporter/LibspectrumMetadataImporter.m Modified: trunk/FuseImporter/LibspectrumMetadataImporter.m =================================================================== --- trunk/FuseImporter/LibspectrumMetadataImporter.m 2010-05-30 12:55:56 UTC (rev 643) +++ trunk/FuseImporter/LibspectrumMetadataImporter.m 2010-08-06 13:51:53 UTC (rev 644) @@ -261,20 +261,20 @@ case 0: [attributes setObject:[NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding] + encoding:NSWindowsCP1252StringEncoding] forKey:(NSString *)kMDItemTitle]; break; case 1: info = [NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding]; + encoding:NSWindowsCP1252StringEncoding]; [attributes setObject:[info componentsSeparatedByString:@"\n"] forKey:(NSString *)kMDItemPublishers]; break; case 2: info = [NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding]; + encoding:NSWindowsCP1252StringEncoding]; [attributes setObject:[info componentsSeparatedByString:@"\n"] forKey:(NSString *)kMDItemAuthors]; break; @@ -282,44 +282,62 @@ [attributes setObject:[NSNumber numberWithInt: [[NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding] intValue]] + encoding:NSWindowsCP1252StringEncoding] intValue]] forKey:(NSString *)kMDItemRecordingYear]; break; case 4: // We will want to translate from "English" etc. info = [NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding]; + encoding:NSWindowsCP1252StringEncoding]; [attributes setObject:[info componentsSeparatedByString:@"\n"] forKey:(NSString *)kMDItemLanguages]; break; case 5: [attributes setObject:[NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding] + encoding:NSWindowsCP1252StringEncoding] forKey:@"net_sourceforge_projects_fuse_emulator_Category"]; break; case 6: - [attributes setObject:[NSString stringWithCString: - (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding] + { + const char *infoString = + libspectrum_tape_block_texts( block, i ); + NSMutableString *priceString = + [NSMutableString stringWithCString:infoString + encoding:NSWindowsCP1252StringEncoding]; + // WoS Infoseek has been putting HTML-style "€" in for the + // Euro symbol which isn't in the ISO Latin 1 string encoding. + // Martijn has agreed to use CP1252 (a superset of Latin 1) + // instead. + // In case of encountering some old blocks we support + // translating "€" to the correect sign as well as + // supporting CP1252 encoding on import replace it with the + // standard euro sign + [priceString replaceOccurrencesOfString:@"€" + withString:@"€" + options:NSCaseInsensitiveSearch + range:NSMakeRange(0, [priceString length])]; + // Also should consider UKP from some TZX Vault info blocks? + [attributes setObject:priceString forKey:@"net_sourceforge_projects_fuse_emulator_Price"]; + } break; case 7: [attributes setObject:[NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding] + encoding:NSWindowsCP1252StringEncoding] forKey:@"net_sourceforge_projects_fuse_emulator_Loader"]; break; case 8: [attributes setObject:[NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding] + encoding:NSWindowsCP1252StringEncoding] forKey:@"net_sourceforge_projects_fuse_emulator_Origin"]; break; case 255: [attributes setObject:[NSString stringWithCString: (const char *)libspectrum_tape_block_texts( block, i ) - encoding:NSISOLatin1StringEncoding] + encoding:NSWindowsCP1252StringEncoding] forKey:(NSString *)kMDItemComment]; break; default: NSLog(@"(Unknown string): %s", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |