2017-05-19 20:28:49 +01:00
|
|
|
// /***************************************************************************
|
2020-02-27 12:31:25 +00:00
|
|
|
// Aaru Data Preservation Suite
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
//
|
2018-12-29 15:26:00 +00:00
|
|
|
// Filename : VTOC.cs
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
// Author(s) : Natalia Portillo <claunia@claunia.com>
|
|
|
|
|
//
|
|
|
|
|
// Component : Partitioning scheme plugins.
|
|
|
|
|
//
|
|
|
|
|
// --[ Description ] ----------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Manages UNIX VTOC and disklabels.
|
|
|
|
|
//
|
|
|
|
|
// --[ License ] --------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// This library is free software; you can redistribute it and/or modify
|
|
|
|
|
// it under the terms of the GNU Lesser General Public License as
|
|
|
|
|
// published by the Free Software Foundation; either version 2.1 of the
|
|
|
|
|
// License, or (at your option) any later version.
|
|
|
|
|
//
|
|
|
|
|
// This library is distributed in the hope that it will be useful, but
|
|
|
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
|
//
|
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
|
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
//
|
|
|
|
|
// ----------------------------------------------------------------------------
|
2022-12-03 16:07:10 +00:00
|
|
|
// Copyright © 2011-2023 Natalia Portillo
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
// ****************************************************************************/
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2020-07-20 07:47:12 +01:00
|
|
|
using System.Diagnostics.CodeAnalysis;
|
2017-12-21 07:08:26 +00:00
|
|
|
using System.Linq;
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
using System.Runtime.InteropServices;
|
2020-02-27 00:33:26 +00:00
|
|
|
using Aaru.CommonTypes;
|
2021-09-19 21:16:47 +01:00
|
|
|
using Aaru.CommonTypes.Enums;
|
2020-02-27 00:33:26 +00:00
|
|
|
using Aaru.CommonTypes.Interfaces;
|
|
|
|
|
using Aaru.Console;
|
2020-07-20 15:43:52 +01:00
|
|
|
using Aaru.Helpers;
|
2020-02-27 00:33:26 +00:00
|
|
|
using Marshal = Aaru.Helpers.Marshal;
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
namespace Aaru.Partitions;
|
|
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
/// <inheritdoc />
|
|
|
|
|
/// <summary>Implements decoding of UNIX VTOC partitions</summary>
|
|
|
|
|
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
|
|
|
|
public sealed class VTOC : IPartition
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
const uint PD_MAGIC = 0xCA5E600D;
|
|
|
|
|
const uint VTOC_SANE = 0x600DDEEE;
|
|
|
|
|
const uint PD_CIGAM = 0x0D605ECA;
|
|
|
|
|
const uint VTOC_ENAS = 0xEEDE0D60;
|
|
|
|
|
const int V_NUMPAR = 16;
|
|
|
|
|
const uint XPDVERS = 3; /* 1st version of extended pdinfo */
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc />
|
2022-11-29 03:13:21 +00:00
|
|
|
public string Name => Localization.VTOC_Name;
|
2022-03-06 13:29:38 +00:00
|
|
|
/// <inheritdoc />
|
2022-03-07 07:36:44 +00:00
|
|
|
public Guid Id => new("6D35A66F-8D77-426F-A562-D88F6A1F1702");
|
2022-03-06 13:29:38 +00:00
|
|
|
/// <inheritdoc />
|
2022-11-29 03:13:21 +00:00
|
|
|
public string Author => Authors.NataliaPortillo;
|
2022-03-06 13:29:38 +00:00
|
|
|
|
2021-08-17 14:25:12 +01:00
|
|
|
/// <inheritdoc />
|
2022-03-06 13:29:38 +00:00
|
|
|
public bool GetInformation(IMediaImage imagePlugin, out List<Partition> partitions, ulong sectorOffset)
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
partitions = new List<Partition>();
|
|
|
|
|
|
|
|
|
|
uint magic = 0;
|
|
|
|
|
ulong pdloc = 0;
|
|
|
|
|
byte[] pdsector = null;
|
2022-11-15 15:58:43 +00:00
|
|
|
bool magicFound = false;
|
|
|
|
|
bool absolute = false;
|
2022-03-06 13:29:38 +00:00
|
|
|
ErrorNumber errno;
|
|
|
|
|
|
|
|
|
|
foreach(ulong i in new ulong[]
|
|
|
|
|
{
|
|
|
|
|
0, 1, 8, 29
|
|
|
|
|
}.TakeWhile(i => i + sectorOffset < imagePlugin.Info.Sectors))
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
errno = imagePlugin.ReadSector(i + sectorOffset, out pdsector);
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(errno != ErrorNumber.NoError)
|
|
|
|
|
continue;
|
2022-03-07 07:36:44 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
magic = BitConverter.ToUInt32(pdsector, 4);
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-11-29 03:13:21 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", Localization.sanity_at_0_is_1_X8_should_be_2_X8_or_3_X8,
|
2022-03-06 13:29:38 +00:00
|
|
|
i + sectorOffset, magic, PD_MAGIC, PD_CIGAM);
|
2021-09-19 21:16:47 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(magic != PD_MAGIC &&
|
|
|
|
|
magic != PD_CIGAM)
|
|
|
|
|
continue;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
magicFound = true;
|
|
|
|
|
pdloc = i;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
break;
|
|
|
|
|
}
|
2017-12-21 06:06:19 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(!magicFound)
|
|
|
|
|
return false;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
PDInfo pd;
|
|
|
|
|
PDInfoOld pdold;
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(magic == PD_MAGIC)
|
|
|
|
|
{
|
|
|
|
|
pd = Marshal.ByteArrayToStructureLittleEndian<PDInfo>(pdsector);
|
|
|
|
|
pdold = Marshal.ByteArrayToStructureLittleEndian<PDInfoOld>(pdsector);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
pd = Marshal.ByteArrayToStructureBigEndian<PDInfo>(pdsector);
|
|
|
|
|
pdold = Marshal.ByteArrayToStructureBigEndian<PDInfoOld>(pdsector);
|
|
|
|
|
}
|
2017-07-24 23:35:33 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.driveid = {0}", pd.driveid);
|
|
|
|
|
|
2022-03-07 07:36:44 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.sanity = 0x{0:X8} (should be 0x{1:X8})", pd.sanity, PD_MAGIC);
|
2022-03-06 13:29:38 +00:00
|
|
|
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.version = {0}", pd.version);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.serial = \"{0}\"", StringHandlers.CToString(pd.serial));
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.cyls = {0}", pd.cyls);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.tracks = {0}", pd.tracks);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.sectors = {0}", pd.sectors);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.bytes = {0}", pd.bytes);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.logicalst = {0}", pd.logicalst);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.errlogst = {0}", pd.errlogst);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.errlogsz = {0}", pd.errlogsz);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.mfgst = {0}", pd.mfgst);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.mfgsz = {0}", pd.mfgsz);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.defectst = {0}", pd.defectst);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.defectsz = {0}", pd.defectsz);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.relno = {0}", pd.relno);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.relst = {0}", pd.relst);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.relsz = {0}", pd.relsz);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.relnext = {0}", pd.relnext);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.allcstrt = {0}", pdold.allcstrt);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.allcend = {0}", pdold.allcend);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.vtoc_ptr = {0}", pd.vtoc_ptr);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.vtoc_len = {0}", pd.vtoc_len);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.vtoc_pad = {0}", pd.vtoc_pad);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.alt_ptr = {0}", pd.alt_ptr);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.alt_len = {0}", pd.alt_len);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pcyls = {0}", pd.pcyls);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.ptracks = {0}", pd.ptracks);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.psectors = {0}", pd.psectors);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pbytes = {0}", pd.pbytes);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.secovhd = {0}", pd.secovhd);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.interleave = {0}", pd.interleave);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.skew = {0}", pd.skew);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[0] = {0}", pd.pad[0]);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[1] = {0}", pd.pad[1]);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[2] = {0}", pd.pad[2]);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[3] = {0}", pd.pad[3]);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[4] = {0}", pd.pad[4]);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[5] = {0}", pd.pad[5]);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[6] = {0}", pd.pad[6]);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "pdinfo.pad[7] = {0}", pd.pad[7]);
|
|
|
|
|
|
|
|
|
|
magicFound = false;
|
2022-11-15 15:58:43 +00:00
|
|
|
bool useOld = false;
|
2022-03-06 13:29:38 +00:00
|
|
|
errno = imagePlugin.ReadSector(pdloc + sectorOffset + 1, out byte[] vtocsector);
|
|
|
|
|
|
|
|
|
|
if(errno != ErrorNumber.NoError)
|
|
|
|
|
return false;
|
2022-03-07 07:36:44 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
var vtoc = new vtoc();
|
|
|
|
|
var vtocOld = new vtocold();
|
|
|
|
|
magic = BitConverter.ToUInt32(vtocsector, 0);
|
|
|
|
|
|
2022-03-16 11:47:00 +00:00
|
|
|
if(magic is VTOC_SANE or VTOC_ENAS)
|
2022-03-06 13:29:38 +00:00
|
|
|
{
|
|
|
|
|
magicFound = true;
|
2022-11-29 03:13:21 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", Localization.New_VTOC_found_at_0, pdloc + sectorOffset + 1);
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(magic == VTOC_SANE)
|
|
|
|
|
vtoc = Marshal.ByteArrayToStructureLittleEndian<vtoc>(vtocsector);
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
else
|
|
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
vtoc = Marshal.ByteArrayToStructureBigEndian<vtoc>(vtocsector);
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
for(int i = 0; i < vtoc.v_part.Length; i++)
|
2022-03-06 13:29:38 +00:00
|
|
|
{
|
|
|
|
|
vtoc.v_part[i].p_tag = (pTag)Swapping.Swap((ushort)vtoc.v_part[i].p_tag);
|
|
|
|
|
vtoc.v_part[i].p_flag = (pFlag)Swapping.Swap((ushort)vtoc.v_part[i].p_flag);
|
|
|
|
|
vtoc.v_part[i].p_start = Swapping.Swap(vtoc.v_part[i].p_start);
|
|
|
|
|
vtoc.v_part[i].p_size = Swapping.Swap(vtoc.v_part[i].p_size);
|
|
|
|
|
vtoc.timestamp[i] = Swapping.Swap(vtoc.timestamp[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-09-19 21:16:47 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(!magicFound &&
|
|
|
|
|
pd.version < XPDVERS)
|
|
|
|
|
{
|
|
|
|
|
magic = BitConverter.ToUInt32(vtocsector, 12);
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-16 11:47:00 +00:00
|
|
|
if(magic is VTOC_SANE or VTOC_ENAS)
|
2017-08-01 13:36:03 +01:00
|
|
|
{
|
2017-12-22 16:53:11 +00:00
|
|
|
magicFound = true;
|
2022-03-06 13:29:38 +00:00
|
|
|
useOld = true;
|
2022-11-29 03:13:21 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", Localization.Old_VTOC_found_at_0, pdloc + sectorOffset + 1);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
|
|
|
|
if(magic == VTOC_SANE)
|
2022-03-06 13:29:38 +00:00
|
|
|
vtocOld = Marshal.ByteArrayToStructureLittleEndian<vtocold>(vtocsector);
|
2017-08-01 13:36:03 +01:00
|
|
|
else
|
|
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
vtocOld = Marshal.ByteArrayToStructureBigEndian<vtocold>(vtocsector);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
for(int i = 0; i < vtocOld.v_part.Length; i++)
|
2017-08-01 13:36:03 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
vtocOld.v_part[i].p_tag = (pTag)Swapping.Swap((ushort)vtocOld.v_part[i].p_tag);
|
|
|
|
|
vtocOld.v_part[i].p_flag = (pFlag)Swapping.Swap((ushort)vtocOld.v_part[i].p_flag);
|
|
|
|
|
vtocOld.v_part[i].p_start = Swapping.Swap(vtocOld.v_part[i].p_start);
|
|
|
|
|
vtocOld.v_part[i].p_size = Swapping.Swap(vtocOld.v_part[i].p_size);
|
|
|
|
|
vtocOld.timestamp[i] = Swapping.Swap(vtocOld.timestamp[i]);
|
2017-08-01 13:36:03 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-03-06 13:29:38 +00:00
|
|
|
}
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(!magicFound)
|
|
|
|
|
{
|
2022-11-29 03:13:21 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", Localization.Searching_for_VTOC_on_relative_byte_0, pd.vtoc_ptr);
|
2022-03-06 13:29:38 +00:00
|
|
|
ulong relSecPtr = pd.vtoc_ptr / imagePlugin.Info.SectorSize;
|
|
|
|
|
uint relSecOff = pd.vtoc_ptr % imagePlugin.Info.SectorSize;
|
|
|
|
|
uint secCount = (relSecOff + pd.vtoc_len) / imagePlugin.Info.SectorSize;
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if((relSecOff + pd.vtoc_len) % imagePlugin.Info.SectorSize > 0)
|
|
|
|
|
secCount++;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin",
|
2022-11-29 03:13:21 +00:00
|
|
|
Localization.Going_to_read_0_sectors_from_sector_1_getting_VTOC_from_byte_2,
|
2022-03-06 13:29:38 +00:00
|
|
|
secCount, relSecPtr + sectorOffset, relSecOff);
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(relSecPtr + sectorOffset + secCount >= imagePlugin.Info.Sectors)
|
2017-08-01 13:36:03 +01:00
|
|
|
{
|
2022-11-29 03:13:21 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", Localization.Going_to_read_past_device_size_aborting);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
errno = imagePlugin.ReadSectors(relSecPtr + sectorOffset, secCount, out byte[] tmp);
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(errno != ErrorNumber.NoError)
|
|
|
|
|
return false;
|
2022-03-07 07:36:44 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
vtocsector = new byte[pd.vtoc_len];
|
|
|
|
|
Array.Copy(tmp, relSecOff, vtocsector, 0, pd.vtoc_len);
|
|
|
|
|
magic = BitConverter.ToUInt32(vtocsector, 0);
|
2021-09-19 21:16:47 +01:00
|
|
|
|
2022-03-16 11:47:00 +00:00
|
|
|
if(magic is VTOC_SANE or VTOC_ENAS)
|
2022-03-06 13:29:38 +00:00
|
|
|
{
|
|
|
|
|
magicFound = true;
|
2022-11-29 03:13:21 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", Localization.New_VTOC_found);
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(magic == VTOC_SANE)
|
|
|
|
|
vtoc = Marshal.ByteArrayToStructureLittleEndian<vtoc>(vtocsector);
|
|
|
|
|
else
|
2017-08-01 13:36:03 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
vtoc = Marshal.ByteArrayToStructureBigEndian<vtoc>(vtocsector);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
for(int i = 0; i < vtoc.v_part.Length; i++)
|
2017-08-01 13:36:03 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
vtoc.v_part[i].p_tag = (pTag)Swapping.Swap((ushort)vtoc.v_part[i].p_tag);
|
|
|
|
|
vtoc.v_part[i].p_flag = (pFlag)Swapping.Swap((ushort)vtoc.v_part[i].p_flag);
|
|
|
|
|
vtoc.v_part[i].p_start = Swapping.Swap(vtoc.v_part[i].p_start);
|
|
|
|
|
vtoc.v_part[i].p_size = Swapping.Swap(vtoc.v_part[i].p_size);
|
|
|
|
|
vtoc.timestamp[i] = Swapping.Swap(vtoc.timestamp[i]);
|
2017-08-01 13:36:03 +01:00
|
|
|
}
|
|
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
}
|
2022-03-06 13:29:38 +00:00
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(!magicFound)
|
|
|
|
|
{
|
2022-11-29 03:13:21 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", Localization.Cannot_find_VTOC);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(useOld)
|
|
|
|
|
{
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_sanity = 0x{0:X8} (should be 0x{1:X8})",
|
|
|
|
|
vtocOld.v_sanity, VTOC_SANE);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_version = {0}", vtocOld.v_version);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_volume = \"{0}\"",
|
|
|
|
|
StringHandlers.CToString(vtocOld.v_volume));
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_sectorsz = {0}", vtocOld.v_sectorsz);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_nparts = {0}", vtocOld.v_nparts);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
for(int i = 0; i < V_NUMPAR; i++)
|
2022-03-06 13:29:38 +00:00
|
|
|
{
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_part[{0}].p_tag = {1} ({2})", i,
|
|
|
|
|
vtocOld.v_part[i].p_tag, (ushort)vtocOld.v_part[i].p_tag);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_part[{0}].p_flag = {1} ({2})", i,
|
|
|
|
|
vtocOld.v_part[i].p_flag, (ushort)vtocOld.v_part[i].p_flag);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_part[{0}].p_start = {1}", i,
|
|
|
|
|
vtocOld.v_part[i].p_start);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.v_part[{0}].p_size = {1}", i,
|
|
|
|
|
vtocOld.v_part[i].p_size);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtocOld.timestamp[{0}] = {1}", i,
|
|
|
|
|
DateHandlers.UnixToDateTime(vtocOld.timestamp[i]));
|
2017-08-01 13:36:03 +01:00
|
|
|
}
|
2022-03-06 13:29:38 +00:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2022-03-07 07:36:44 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_sanity = 0x{0:X8} (should be 0x{1:X8})", vtoc.v_sanity,
|
|
|
|
|
VTOC_SANE);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_version = {0}", vtoc.v_version);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_volume = \"{0}\"",
|
|
|
|
|
StringHandlers.CToString(vtoc.v_volume));
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_pad = {0}", vtoc.v_pad);
|
|
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_nparts = {0}", vtoc.v_nparts);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
for(int i = 0; i < V_NUMPAR; i++)
|
2022-03-06 13:29:38 +00:00
|
|
|
{
|
2022-03-07 07:36:44 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_part[{0}].p_tag = {1} ({2})", i, vtoc.v_part[i].p_tag,
|
|
|
|
|
(ushort)vtoc.v_part[i].p_tag);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_part[{0}].p_flag = {1} ({2})", i,
|
|
|
|
|
vtoc.v_part[i].p_flag, (ushort)vtoc.v_part[i].p_flag);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-07 07:36:44 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_part[{0}].p_start = {1}", i, vtoc.v_part[i].p_start);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-07 07:36:44 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.v_part[{0}].p_size = {1}", i, vtoc.v_part[i].p_size);
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
AaruConsole.DebugWriteLine("VTOC plugin", "vtoc.timestamp[{0}] = {1}", i,
|
|
|
|
|
DateHandlers.UnixToDateTime(vtoc.timestamp[i]));
|
2017-08-01 13:36:03 +01:00
|
|
|
}
|
2022-03-06 13:29:38 +00:00
|
|
|
}
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
uint bps;
|
|
|
|
|
partition[] parts;
|
|
|
|
|
int[] timestamps;
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(useOld)
|
|
|
|
|
{
|
|
|
|
|
bps = vtocOld.v_sectorsz;
|
|
|
|
|
parts = vtocOld.v_part;
|
|
|
|
|
timestamps = vtocOld.timestamp;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bps = pd.bytes;
|
|
|
|
|
parts = vtoc.v_part;
|
|
|
|
|
timestamps = vtoc.timestamp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check for a partition describing the VTOC whose start is the same as the start we know.
|
|
|
|
|
// This means partition starts are absolute, not relative, to the VTOC position
|
2022-11-15 15:58:43 +00:00
|
|
|
for(int i = 0; i < V_NUMPAR; i++)
|
2022-03-06 13:29:38 +00:00
|
|
|
if(parts[i].p_tag == pTag.V_BACKUP &&
|
|
|
|
|
(ulong)parts[i].p_start == sectorOffset)
|
2017-08-01 13:36:03 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
absolute = true;
|
|
|
|
|
|
|
|
|
|
break;
|
2017-08-01 13:36:03 +01:00
|
|
|
}
|
|
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
for(int i = 0; i < V_NUMPAR; i++)
|
2022-03-06 13:29:38 +00:00
|
|
|
if(parts[i].p_tag != pTag.V_UNUSED)
|
|
|
|
|
{
|
|
|
|
|
var part = new Partition
|
2017-09-17 05:27:59 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
Start = (ulong)(parts[i].p_start * bps) / imagePlugin.Info.SectorSize,
|
|
|
|
|
Length = (ulong)(parts[i].p_size * bps) / imagePlugin.Info.SectorSize,
|
|
|
|
|
Offset = (ulong)(parts[i].p_start * bps),
|
|
|
|
|
Size = (ulong)(parts[i].p_size * bps),
|
|
|
|
|
Sequence = (ulong)i,
|
|
|
|
|
Type = $"UNIX: {DecodeUnixtag(parts[i].p_tag, !useOld)}",
|
|
|
|
|
Scheme = Name
|
|
|
|
|
};
|
|
|
|
|
|
2022-11-15 15:58:43 +00:00
|
|
|
string info = "";
|
2022-03-06 13:29:38 +00:00
|
|
|
|
|
|
|
|
// Apparently old ones are absolute :?
|
|
|
|
|
if(!useOld &&
|
|
|
|
|
!absolute)
|
2017-08-01 13:36:03 +01:00
|
|
|
{
|
2022-03-06 13:29:38 +00:00
|
|
|
part.Start += sectorOffset;
|
|
|
|
|
part.Offset += sectorOffset * imagePlugin.Info.SectorSize;
|
|
|
|
|
}
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(parts[i].p_flag.HasFlag(pFlag.V_VALID))
|
2022-11-29 03:13:21 +00:00
|
|
|
info += Localization.valid;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(parts[i].p_flag.HasFlag(pFlag.V_UNMNT))
|
2022-11-29 03:13:21 +00:00
|
|
|
info += Localization._unmountable_;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(parts[i].p_flag.HasFlag(pFlag.V_OPEN))
|
2022-11-29 03:13:21 +00:00
|
|
|
info += Localization.open;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(parts[i].p_flag.HasFlag(pFlag.V_REMAP))
|
2022-11-29 03:13:21 +00:00
|
|
|
info += Localization.alternate_sector_mapping;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(parts[i].p_flag.HasFlag(pFlag.V_RONLY))
|
2022-11-29 03:13:21 +00:00
|
|
|
info += Localization._read_only_;
|
2020-02-29 18:03:35 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(timestamps[i] != 0)
|
2022-11-29 03:13:21 +00:00
|
|
|
info += string.Format(Localization.created_on_0, DateHandlers.UnixToDateTime(timestamps[i]));
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
part.Description = "UNIX slice" + info + ".";
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
if(part.End < imagePlugin.Info.Sectors)
|
|
|
|
|
partitions.Add(part);
|
|
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
return partitions.Count > 0;
|
|
|
|
|
}
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-11-13 19:59:24 +00:00
|
|
|
static string DecodeUnixtag(pTag type, bool isNew) => type switch
|
2022-11-15 15:58:43 +00:00
|
|
|
{
|
2022-11-29 03:13:21 +00:00
|
|
|
pTag.V_UNUSED => Localization.Unused,
|
|
|
|
|
pTag.V_BOOT => Localization.Boot,
|
2022-11-15 15:58:43 +00:00
|
|
|
pTag.V_ROOT => "/",
|
2022-11-29 03:13:21 +00:00
|
|
|
pTag.V_SWAP => Localization.swap,
|
2022-11-15 15:58:43 +00:00
|
|
|
pTag.V_USER => "/usr",
|
2022-11-29 03:13:21 +00:00
|
|
|
pTag.V_BACKUP => Localization.Whole_disk,
|
|
|
|
|
pTag.V_STAND_OLD => isNew ? "Stand" : Localization.Alternate_sector_space,
|
|
|
|
|
pTag.V_VAR_OLD => isNew ? "/var" : Localization.non_UNIX,
|
|
|
|
|
pTag.V_HOME_OLD => isNew ? "/home" : Localization.Alternate_track_space,
|
|
|
|
|
pTag.V_ALTSCTR_OLD => isNew ? Localization.Alternate_sector_track : "Stand",
|
|
|
|
|
pTag.V_CACHE => isNew ? Localization.Cache : "/var",
|
|
|
|
|
pTag.V_RESERVED => isNew ? Localization.Reserved : "/home",
|
|
|
|
|
pTag.V_DUMP => Localization.dump,
|
|
|
|
|
pTag.V_ALTSCTR => Localization.Alternate_sector_track,
|
|
|
|
|
pTag.V_VMPUBLIC => Localization.volume_mgt_public_partition,
|
|
|
|
|
pTag.V_VMPRIVATE => Localization.volume_mgt_private_partition,
|
|
|
|
|
_ => string.Format(Localization.Unknown_TAG_0, type)
|
2022-11-15 15:58:43 +00:00
|
|
|
};
|
2017-12-24 03:11:33 +00:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
2022-03-16 11:47:00 +00:00
|
|
|
|
2022-03-15 01:37:37 +00:00
|
|
|
// ReSharper disable once InconsistentNaming
|
2022-03-06 13:29:38 +00:00
|
|
|
struct PDInfo
|
|
|
|
|
{
|
|
|
|
|
public readonly uint driveid; /*identifies the device type*/
|
|
|
|
|
public readonly uint sanity; /*verifies device sanity*/
|
|
|
|
|
public readonly uint version; /*version number*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
|
|
|
|
|
public readonly byte[] serial; /*serial number of the device*/
|
|
|
|
|
public readonly uint cyls; /*number of cylinders per drive*/
|
|
|
|
|
public readonly uint tracks; /*number tracks per cylinder*/
|
|
|
|
|
public readonly uint sectors; /*number sectors per track*/
|
|
|
|
|
public readonly uint bytes; /*number of bytes per sector*/
|
|
|
|
|
public readonly uint logicalst; /*sector address of logical sector 0*/
|
|
|
|
|
public readonly uint errlogst; /*sector address of error log area*/
|
|
|
|
|
public readonly uint errlogsz; /*size in bytes of error log area*/
|
|
|
|
|
public readonly uint mfgst; /*sector address of mfg. defect info*/
|
|
|
|
|
public readonly uint mfgsz; /*size in bytes of mfg. defect info*/
|
|
|
|
|
public readonly uint defectst; /*sector address of the defect map*/
|
|
|
|
|
public readonly uint defectsz; /*size in bytes of defect map*/
|
|
|
|
|
public readonly uint relno; /*number of relocation areas*/
|
|
|
|
|
public readonly uint relst; /*sector address of relocation area*/
|
|
|
|
|
public readonly uint relsz; /*size in sectors of relocation area*/
|
|
|
|
|
public readonly uint relnext; /*address of next avail reloc sector*/
|
|
|
|
|
/* the previous items are left intact from AT&T's 3b2 pdinfo. Following
|
|
|
|
|
are added for the 80386 port */
|
|
|
|
|
public readonly uint vtoc_ptr; /*byte offset of vtoc block*/
|
|
|
|
|
public readonly ushort vtoc_len; /*byte length of vtoc block*/
|
|
|
|
|
public readonly ushort vtoc_pad; /* pad for 16-bit machine alignment */
|
|
|
|
|
public readonly uint alt_ptr; /*byte offset of alternates table*/
|
|
|
|
|
public readonly ushort alt_len; /*byte length of alternates table*/
|
|
|
|
|
/* new in version 3 */
|
|
|
|
|
public readonly uint pcyls; /*physical cylinders per drive*/
|
|
|
|
|
public readonly uint ptracks; /*physical tracks per cylinder*/
|
|
|
|
|
public readonly uint psectors; /*physical sectors per track*/
|
|
|
|
|
public readonly uint pbytes; /*physical bytes per sector*/
|
|
|
|
|
public readonly uint secovhd; /*sector overhead bytes per sector*/
|
|
|
|
|
public readonly ushort interleave; /*interleave factor*/
|
|
|
|
|
public readonly ushort skew; /*skew factor*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
|
|
|
|
|
public readonly uint[] pad; /*space for more stuff*/
|
|
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
2022-03-16 11:47:00 +00:00
|
|
|
|
2022-03-15 01:37:37 +00:00
|
|
|
// ReSharper disable once InconsistentNaming
|
2022-03-06 13:29:38 +00:00
|
|
|
struct PDInfoOld
|
|
|
|
|
{
|
|
|
|
|
public readonly uint driveid; /*identifies the device type*/
|
|
|
|
|
public readonly uint sanity; /*verifies device sanity*/
|
|
|
|
|
public readonly uint version; /*version number*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
|
|
|
|
|
public readonly byte[] serial; /*serial number of the device*/
|
|
|
|
|
public readonly uint cyls; /*number of cylinders per drive*/
|
|
|
|
|
public readonly uint tracks; /*number tracks per cylinder*/
|
|
|
|
|
public readonly uint sectors; /*number sectors per track*/
|
|
|
|
|
public readonly uint bytes; /*number of bytes per sector*/
|
|
|
|
|
public readonly uint logicalst; /*sector address of logical sector 0*/
|
|
|
|
|
public readonly uint errlogst; /*sector address of error log area*/
|
|
|
|
|
public readonly uint errlogsz; /*size in bytes of error log area*/
|
|
|
|
|
public readonly uint mfgst; /*sector address of mfg. defect info*/
|
|
|
|
|
public readonly uint mfgsz; /*size in bytes of mfg. defect info*/
|
|
|
|
|
public readonly uint defectst; /*sector address of the defect map*/
|
|
|
|
|
public readonly uint defectsz; /*size in bytes of defect map*/
|
|
|
|
|
public readonly uint relno; /*number of relocation areas*/
|
|
|
|
|
public readonly uint relst; /*sector address of relocation area*/
|
|
|
|
|
public readonly uint relsz; /*size in sectors of relocation area*/
|
|
|
|
|
public readonly uint relnext; /*address of next avail reloc sector*/
|
|
|
|
|
public readonly uint allcstrt; /*start of the allocatable disk*/
|
|
|
|
|
public readonly uint allcend; /*end of allocatable disk*/
|
|
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
2022-03-16 11:47:00 +00:00
|
|
|
|
2022-03-15 01:37:37 +00:00
|
|
|
// ReSharper disable once InconsistentNaming
|
2022-03-06 13:29:38 +00:00
|
|
|
struct vtocold
|
|
|
|
|
{
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
|
|
|
|
|
public readonly uint[] v_bootinfo; /*info needed by mboot*/
|
|
|
|
|
public readonly uint v_sanity; /*to verify vtoc sanity*/
|
|
|
|
|
public readonly uint v_version; /*layout version*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
|
|
|
|
|
public readonly byte[] v_volume; /*volume name*/
|
|
|
|
|
public readonly ushort v_sectorsz; /*sector size in bytes*/
|
|
|
|
|
public readonly ushort v_nparts; /*number of partitions*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
|
|
|
|
|
public readonly uint[] v_reserved; /*free space*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = V_NUMPAR)]
|
|
|
|
|
public readonly partition[] v_part; /*partition headers*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = V_NUMPAR)]
|
|
|
|
|
public readonly int[] timestamp; /* SCSI time stamp */
|
|
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
2022-03-16 11:47:00 +00:00
|
|
|
|
2022-03-15 01:37:37 +00:00
|
|
|
// ReSharper disable once InconsistentNaming
|
2022-03-06 13:29:38 +00:00
|
|
|
struct vtoc
|
|
|
|
|
{
|
|
|
|
|
public readonly uint v_sanity; /*to verify vtoc sanity*/
|
|
|
|
|
public readonly uint v_version; /*layout version*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
|
|
|
|
|
public readonly byte[] v_volume; /*volume name*/
|
|
|
|
|
public readonly ushort v_nparts; /*number of partitions*/
|
|
|
|
|
public readonly ushort v_pad; /*pad for 286 compiler*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
|
|
|
|
|
public readonly uint[] v_reserved; /*free space*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = V_NUMPAR)]
|
|
|
|
|
public readonly partition[] v_part; /*partition headers*/
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = V_NUMPAR)]
|
|
|
|
|
public readonly int[] timestamp; /* SCSI time stamp */
|
|
|
|
|
}
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
2021-08-17 21:23:10 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
// ReSharper disable once InconsistentNaming
|
|
|
|
|
struct partition
|
|
|
|
|
{
|
|
|
|
|
public pTag p_tag; /*ID tag of partition*/
|
|
|
|
|
public pFlag p_flag; /*permision flags*/
|
|
|
|
|
public int p_start; /*start sector no of partition*/
|
|
|
|
|
public int p_size; /*# of blocks in partition*/
|
|
|
|
|
}
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
|
|
|
|
enum pTag : ushort
|
|
|
|
|
{
|
|
|
|
|
/// <summary>empty</summary>
|
|
|
|
|
V_UNUSED = 0x0000,
|
|
|
|
|
/// <summary>boot</summary>
|
|
|
|
|
V_BOOT = 0x0001,
|
|
|
|
|
/// <summary>root</summary>
|
|
|
|
|
V_ROOT = 0x0002,
|
|
|
|
|
/// <summary>swap</summary>
|
|
|
|
|
V_SWAP = 0x0003,
|
|
|
|
|
/// <summary>/usr</summary>
|
|
|
|
|
V_USER = 0x0004,
|
|
|
|
|
/// <summary>whole disk</summary>
|
|
|
|
|
V_BACKUP = 0x0005,
|
|
|
|
|
/// <summary>stand partition ??</summary>
|
|
|
|
|
V_STAND_OLD = 0x0006,
|
|
|
|
|
/// <summary>alternate sector space</summary>
|
|
|
|
|
V_ALTS_OLD = 0x0006,
|
|
|
|
|
/// <summary>/var</summary>
|
|
|
|
|
V_VAR_OLD = 0x0007,
|
|
|
|
|
/// <summary>non UNIX</summary>
|
|
|
|
|
V_OTHER = 0x0007,
|
|
|
|
|
/// <summary>/home</summary>
|
|
|
|
|
V_HOME_OLD = 0x0008,
|
|
|
|
|
/// <summary>alternate track space</summary>
|
|
|
|
|
V_ALTS = 0x0008,
|
|
|
|
|
/// <summary>alternate sector track</summary>
|
|
|
|
|
V_ALTSCTR_OLD = 0x0009,
|
|
|
|
|
/// <summary>stand partition ??</summary>
|
|
|
|
|
V_STAND = 0x0009,
|
|
|
|
|
/// <summary>cache</summary>
|
|
|
|
|
V_CACHE = 0x000A,
|
|
|
|
|
/// <summary>/var</summary>
|
|
|
|
|
V_VAR = 0x000A,
|
|
|
|
|
/// <summary>reserved</summary>
|
|
|
|
|
V_RESERVED = 0x000B,
|
|
|
|
|
/// <summary>/home</summary>
|
|
|
|
|
V_HOME = 0x000B,
|
|
|
|
|
/// <summary>dump partition</summary>
|
|
|
|
|
V_DUMP = 0x000C,
|
|
|
|
|
/// <summary>alternate sector track</summary>
|
|
|
|
|
V_ALTSCTR = 0x000D,
|
|
|
|
|
/// <summary>volume mgt public partition</summary>
|
|
|
|
|
V_VMPUBLIC = 0x000E,
|
|
|
|
|
/// <summary>volume mgt private partition</summary>
|
|
|
|
|
V_VMPRIVATE = 0x000F
|
|
|
|
|
}
|
2017-08-01 13:36:03 +01:00
|
|
|
|
2022-03-06 13:29:38 +00:00
|
|
|
[Flags, SuppressMessage("ReSharper", "InconsistentNaming")]
|
|
|
|
|
enum pFlag : ushort
|
|
|
|
|
{
|
2022-11-15 15:58:43 +00:00
|
|
|
/* Partition permission flags */ V_UNMNT = 0x01, /* Unmountable partition */ V_RONLY = 0x10, /* Read only */
|
|
|
|
|
V_REMAP = 0x20, /* do alternate sector mapping */ V_OPEN = 0x100, /* Partition open (for driver use) */
|
|
|
|
|
V_VALID = 0x200, /* Partition is valid to use */ V_VOMASK = 0x300 /* mask for open and valid */
|
* DiscImageChef.Helpers/BigEndianStructure.cs:
* DiscImageChef.Helpers/DiscImageChef.Helpers.csproj:
Added code that directly marshals from a big-endian byte
array. But untested with nested structures.
* DiscImageChef.Partitions/Acorn.cs:
Added support for Acorn FileCore partition, closes #4.
* DiscImageChef.Partitions/BSD.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/DEC.cs:
Added support for DEC disklabels, closes #11.
* DiscImageChef.Partitions/DragonFlyBSD.cs:
Added support for DragonFly BSD 64-bit disklabels.
* DiscImageChef.Partitions/PC98.cs:
Added support for NEC PC-9800 partitions.
* DiscImageChef.Partitions/RioKarma.cs:
Added support for Rio Karma partitions.
* DiscImageChef.Partitions/SGI.cs:
Added support for SGI DVHs, closes #9.
* DiscImageChef.Partitions/UNIX.cs:
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* TODO:
* README.md:
* DiscImageChef.Partitions/DiscImageChef.Partitions.csproj:
Added support for Acorn FileCore partition, closes #4.
Added support for DEC disklabels, closes #11.
Added support for SGI DVHs, closes #9.
Moved BSD partitions from inside MBR code to separate code, as
they can (and do) appear on other architectures as the only
scheme.
Added support for DragonFly BSD 64-bit disklabels.
Added support for NEC PC-9800 partitions.
Added support for Rio Karma partitions.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/GPT.cs:
Added new partition type UUIDs.
* DiscImageChef.Partitions/MBR.cs:
Moved BSD partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
Moved UNIX partitions from inside MBR code to separate code,
as they can (and do) appear on other architectures as the
only scheme.
* DiscImageChef.Partitions/Sun.cs:
Added new partition types.
Prepare structures for marshaling.
2016-08-21 08:27:43 +01:00
|
|
|
}
|
|
|
|
|
}
|