mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
Added support for different character encodings.
This commit is contained in:
@@ -34,6 +34,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Claunia.RsrcFork;
|
||||
using DiscImageChef.CommonTypes;
|
||||
@@ -350,8 +351,7 @@ namespace DiscImageChef.DiscImages
|
||||
Resource dartRsrc = rsrcFork.GetResource(0x44415254);
|
||||
if(dartRsrc != null)
|
||||
{
|
||||
// TODO: Use MacRoman
|
||||
string dArt = StringHandlers.PascalToString(dartRsrc.GetResource(dartRsrc.GetIds()[0]));
|
||||
string dArt = StringHandlers.PascalToString(dartRsrc.GetResource(dartRsrc.GetIds()[0]), Encoding.GetEncoding("macintosh"));
|
||||
string dArtRegEx = "(?<version>\\S+), tag checksum=\\$(?<tagchk>[0123456789ABCDEF]{8}), data checksum=\\$(?<datachk>[0123456789ABCDEF]{8})$";
|
||||
Regex dArtEx = new Regex(dArtRegEx);
|
||||
Match dArtMatch = dArtEx.Match(dArt);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// /***************************************************************************
|
||||
// /***************************************************************************
|
||||
// The Disc Image Chef
|
||||
// ----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Claunia.RsrcFork;
|
||||
using DiscImageChef.CommonTypes;
|
||||
@@ -178,7 +179,7 @@ namespace DiscImageChef.ImagePlugins
|
||||
|
||||
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
|
||||
|
||||
tmp_header.diskName = StringHandlers.PascalToString(pString);
|
||||
tmp_header.diskName = StringHandlers.PascalToString(pString, Encoding.GetEncoding("macintosh"));
|
||||
tmp_header.dataSize = BigEndianBitConverter.ToUInt32(buffer, 0x40);
|
||||
tmp_header.tagSize = BigEndianBitConverter.ToUInt32(buffer, 0x44);
|
||||
tmp_header.dataChecksum = BigEndianBitConverter.ToUInt32(buffer, 0x48);
|
||||
@@ -248,7 +249,7 @@ namespace DiscImageChef.ImagePlugins
|
||||
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
|
||||
|
||||
Array.Copy(buffer, 0, pString, 0, 64);
|
||||
header.diskName = StringHandlers.PascalToString(pString);
|
||||
header.diskName = StringHandlers.PascalToString(pString, Encoding.GetEncoding("macintosh"));
|
||||
header.dataSize = BigEndianBitConverter.ToUInt32(buffer, 0x40);
|
||||
header.tagSize = BigEndianBitConverter.ToUInt32(buffer, 0x44);
|
||||
header.dataChecksum = BigEndianBitConverter.ToUInt32(buffer, 0x48);
|
||||
@@ -492,7 +493,7 @@ namespace DiscImageChef.ImagePlugins
|
||||
if(dCpyRsrc != null)
|
||||
{
|
||||
// TODO: Use MacRoman
|
||||
string dCpy = StringHandlers.PascalToString(dCpyRsrc.GetResource(dCpyRsrc.GetIds()[0]));
|
||||
string dCpy = StringHandlers.PascalToString(dCpyRsrc.GetResource(dCpyRsrc.GetIds()[0]), Encoding.GetEncoding("macintosh"));
|
||||
string dCpyRegEx = "(?<application>\\S+)\\s(?<version>\\S+)\\rData checksum=\\$(?<checksum>\\S+)$";
|
||||
Regex dCpyEx = new Regex(dCpyRegEx);
|
||||
Match dCpyMatch = dCpyEx.Match(dCpy);
|
||||
|
||||
@@ -34,6 +34,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using Claunia.RsrcFork;
|
||||
using DiscImageChef.CommonTypes;
|
||||
using DiscImageChef.Console;
|
||||
@@ -292,7 +293,7 @@ namespace DiscImageChef.DiscImages
|
||||
|
||||
DicConsole.DebugWriteLine("NDIF plugin", "footer.type = {0}", header.version);
|
||||
DicConsole.DebugWriteLine("NDIF plugin", "footer.driver = {0}", header.driver);
|
||||
DicConsole.DebugWriteLine("NDIF plugin", "footer.name = {0}", StringHandlers.PascalToString(header.name));
|
||||
DicConsole.DebugWriteLine("NDIF plugin", "footer.name = {0}", StringHandlers.PascalToString(header.name, Encoding.GetEncoding("macintosh")));
|
||||
DicConsole.DebugWriteLine("NDIF plugin", "footer.sectors = {0}", header.sectors);
|
||||
DicConsole.DebugWriteLine("NDIF plugin", "footer.maxSectorsPerChunk = {0}", header.maxSectorsPerChunk);
|
||||
DicConsole.DebugWriteLine("NDIF plugin", "footer.dataOffset = {0}", header.dataOffset);
|
||||
@@ -443,7 +444,7 @@ namespace DiscImageChef.DiscImages
|
||||
|
||||
ImageInfo.imageCreationTime = imageFilter.GetCreationTime();
|
||||
ImageInfo.imageLastModificationTime = imageFilter.GetLastWriteTime();
|
||||
ImageInfo.imageName = StringHandlers.PascalToString(header.name);
|
||||
ImageInfo.imageName = StringHandlers.PascalToString(header.name, Encoding.GetEncoding("macintosh"));
|
||||
ImageInfo.sectorSize = sectorSize;
|
||||
ImageInfo.xmlMediaType = XmlMediaType.BlockMedia;
|
||||
ImageInfo.imageSize = ImageInfo.sectors * sectorSize;
|
||||
|
||||
Reference in New Issue
Block a user