mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Adjusted COHERENT filesystem offsets.
This commit is contained in:
@@ -47,8 +47,8 @@ namespace DiscImageChef.Filesystems
|
|||||||
const uint SYSV_CIGAM = 0x207E18FD;
|
const uint SYSV_CIGAM = 0x207E18FD;
|
||||||
// Rest have no magic.
|
// Rest have no magic.
|
||||||
// Per a Linux kernel, Coherent fs has following:
|
// Per a Linux kernel, Coherent fs has following:
|
||||||
const string COH_FNAME = "nonamexxxxx ";
|
const string COH_FNAME = "noname";
|
||||||
const string COH_FPACK = "nopackxxxxx\n";
|
const string COH_FPACK = "nopack";
|
||||||
// SCO AFS
|
// SCO AFS
|
||||||
const ushort SCO_NFREE = 0xFFFF;
|
const ushort SCO_NFREE = 0xFFFF;
|
||||||
// UNIX 7th Edition has nothing to detect it, so check for a valid filesystem is a must :(
|
// UNIX 7th Edition has nothing to detect it, so check for a valid filesystem is a must :(
|
||||||
@@ -137,12 +137,12 @@ namespace DiscImageChef.Filesystems
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
byte[] coherent_string = new byte[6];
|
byte[] coherent_string = new byte[6];
|
||||||
Array.Copy(sb_sector, 0x1E8, coherent_string, 0, 6); // Coherent UNIX s_fname location
|
Array.Copy(sb_sector, 0x1E4, coherent_string, 0, 6); // Coherent UNIX s_fname location
|
||||||
s_fname = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
s_fname = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
||||||
Array.Copy(sb_sector, 0x1EE, coherent_string, 0, 6); // Coherent UNIX s_fpack location
|
Array.Copy(sb_sector, 0x1EA, coherent_string, 0, 6); // Coherent UNIX s_fpack location
|
||||||
s_fpack = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
s_fpack = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
||||||
|
|
||||||
if(s_fname == COH_FNAME || s_fpack == COH_FPACK)
|
if(s_fname == COH_FNAME && s_fpack == COH_FPACK)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Now try to identify 7th edition
|
// Now try to identify 7th edition
|
||||||
@@ -249,12 +249,12 @@ namespace DiscImageChef.Filesystems
|
|||||||
}
|
}
|
||||||
|
|
||||||
byte[] coherent_string = new byte[6];
|
byte[] coherent_string = new byte[6];
|
||||||
Array.Copy(sb_sector, 0x1E8, coherent_string, 0, 6); // Coherent UNIX s_fname location
|
Array.Copy(sb_sector, 0x1E4, coherent_string, 0, 6); // Coherent UNIX s_fname location
|
||||||
s_fname = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
s_fname = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
||||||
Array.Copy(sb_sector, 0x1EE, coherent_string, 0, 6); // Coherent UNIX s_fpack location
|
Array.Copy(sb_sector, 0x1EA, coherent_string, 0, 6); // Coherent UNIX s_fpack location
|
||||||
s_fpack = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
s_fpack = StringHandlers.CToString(coherent_string, CurrentEncoding);
|
||||||
|
|
||||||
if(s_fname == COH_FNAME || s_fpack == COH_FPACK)
|
if(s_fname == COH_FNAME && s_fpack == COH_FPACK)
|
||||||
{
|
{
|
||||||
BigEndianBitConverter.IsLittleEndian = true; // Coherent is in PDP endianness, use helper for that
|
BigEndianBitConverter.IsLittleEndian = true; // Coherent is in PDP endianness, use helper for that
|
||||||
coherent = true;
|
coherent = true;
|
||||||
@@ -538,22 +538,22 @@ namespace DiscImageChef.Filesystems
|
|||||||
CoherentSuperBlock coh_sb = new CoherentSuperBlock();
|
CoherentSuperBlock coh_sb = new CoherentSuperBlock();
|
||||||
byte[] coh_strings = new byte[6];
|
byte[] coh_strings = new byte[6];
|
||||||
|
|
||||||
coh_sb.s_isize = BigEndianBitConverter.ToUInt16(sb_sector, 0x000);
|
coh_sb.s_isize = BitConverter.ToUInt16(sb_sector, 0x000);
|
||||||
coh_sb.s_fsize = Swapping.PDPFromLittleEndian(BigEndianBitConverter.ToUInt32(sb_sector, 0x002));
|
coh_sb.s_fsize = Swapping.PDPFromLittleEndian(BitConverter.ToUInt32(sb_sector, 0x002));
|
||||||
coh_sb.s_nfree = BigEndianBitConverter.ToUInt16(sb_sector, 0x006);
|
coh_sb.s_nfree = BitConverter.ToUInt16(sb_sector, 0x006);
|
||||||
coh_sb.s_ninode = BigEndianBitConverter.ToUInt16(sb_sector, 0x108);
|
coh_sb.s_ninode = BitConverter.ToUInt16(sb_sector, 0x108);
|
||||||
coh_sb.s_flock = sb_sector[0x1D2];
|
coh_sb.s_flock = sb_sector[0x1D2];
|
||||||
coh_sb.s_ilock = sb_sector[0x1D3];
|
coh_sb.s_ilock = sb_sector[0x1D3];
|
||||||
coh_sb.s_fmod = sb_sector[0x1D4];
|
coh_sb.s_fmod = sb_sector[0x1D4];
|
||||||
coh_sb.s_ronly = sb_sector[0x1D5];
|
coh_sb.s_ronly = sb_sector[0x1D5];
|
||||||
coh_sb.s_time = Swapping.PDPFromLittleEndian(BigEndianBitConverter.ToUInt32(sb_sector, 0x1D6));
|
coh_sb.s_time = Swapping.PDPFromLittleEndian(BitConverter.ToUInt32(sb_sector, 0x1D6));
|
||||||
coh_sb.s_tfree = Swapping.PDPFromLittleEndian(BigEndianBitConverter.ToUInt32(sb_sector, 0x1DE));
|
coh_sb.s_tfree = Swapping.PDPFromLittleEndian(BitConverter.ToUInt32(sb_sector, 0x1DA));
|
||||||
coh_sb.s_tinode = BigEndianBitConverter.ToUInt16(sb_sector, 0x1E2);
|
coh_sb.s_tinode = BitConverter.ToUInt16(sb_sector, 0x1DE);
|
||||||
coh_sb.s_int_m = BigEndianBitConverter.ToUInt16(sb_sector, 0x1E4);
|
coh_sb.s_int_m = BitConverter.ToUInt16(sb_sector, 0x1E0);
|
||||||
coh_sb.s_int_n = BigEndianBitConverter.ToUInt16(sb_sector, 0x1E6);
|
coh_sb.s_int_n = BitConverter.ToUInt16(sb_sector, 0x1E2);
|
||||||
Array.Copy(sb_sector, 0x1E8, coh_strings, 0, 6);
|
Array.Copy(sb_sector, 0x1E4, coh_strings, 0, 6);
|
||||||
coh_sb.s_fname = StringHandlers.CToString(coh_strings, CurrentEncoding);
|
coh_sb.s_fname = StringHandlers.CToString(coh_strings, CurrentEncoding);
|
||||||
Array.Copy(sb_sector, 0x1EE, coh_strings, 0, 6);
|
Array.Copy(sb_sector, 0x1EA, coh_strings, 0, 6);
|
||||||
coh_sb.s_fpack = StringHandlers.CToString(coh_strings, CurrentEncoding);
|
coh_sb.s_fpack = StringHandlers.CToString(coh_strings, CurrentEncoding);
|
||||||
|
|
||||||
xmlFSType.Type = "Coherent fs";
|
xmlFSType.Type = "Coherent fs";
|
||||||
|
|||||||
Reference in New Issue
Block a user