// /***************************************************************************
// Aaru Data Preservation Suite
// ----------------------------------------------------------------------------
//
// Filename       : RRIP.cs
// Author(s)      : Natalia Portillo <claunia@claunia.com>
//
// Component      : ISO9660 filesystem plugin.
//
// --[ 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/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2011-2026 Natalia Portillo
// In the loving memory of Facunda "Tata" Suárez Domínguez, R.I.P. 2019/07/24
// ****************************************************************************/

// ReSharper disable UnusedMember.Local

using System;

namespace Aaru.Filesystems;

public sealed partial class ISO9660
{
    const ushort RRIP_MAGIC            = 0x5252; // "RR"
    const ushort RRIP_POSIX_ATTRIBUTES = 0x5058; // "PX"
    const ushort RRIP_POSIX_DEV_NO     = 0x504E; // "PN"
    const ushort RRIP_SYMLINK          = 0x534C; // "SL"
    const ushort RRIP_NAME             = 0x4E4D; // "NM"
    const ushort RRIP_CHILDLINK        = 0x434C; // "CL"
    const ushort RRIP_PARENTLINK       = 0x504C; // "PL"
    const ushort RRIP_RELOCATED_DIR    = 0x5245; // "RE"
    const ushort RRIP_TIMESTAMPS       = 0x5446; // "TF"
    const ushort RRIP_SPARSE           = 0x5346; // "SF"

#region Nested type: AlternateNameFlags

    [Flags]
    enum AlternateNameFlags : byte
    {
        Continue    = 1,
        Current     = 2,
        Parent      = 4,
        Networkname = 32
    }

#endregion

#region Nested type: PosixMode

    [Flags]
    enum PosixMode : uint
    {
        OwnerRead    = 0x0100,
        OwnerWrite   = 0x0080,
        OwnerExecute = 0x0040,
        GroupRead    = 0x0020,
        GroupWrite   = 0x0010,
        GroupExecute = 0x0008,
        OtherRead    = 0x0004,
        OtherWrite   = 0x0002,
        OtherExecute = 0x0001,
        SetUID       = 0x0800,
        SetGid       = 0x0400,
        IsVTX        = 0x0200,
        Socket       = 0xC000,
        Symlink      = 0xA000,
        Regular      = 0x8000,
        Block        = 0x6000,
        Character    = 0x2000,
        Directory    = 0x4000,
        Pipe         = 0x1000
    }

#endregion

#region Nested type: SymlinkComponentFlags

    [Flags]
    enum SymlinkComponentFlags : byte
    {
        Continue    = 1,
        Current     = 2,
        Parent      = 4,
        Root        = 8,
        Mountpoint  = 16,
        Networkname = 32
    }

#endregion

#region Nested type: SymlinkFlags

    [Flags]
    enum SymlinkFlags : byte
    {
        Continue = 1
    }

#endregion

#region Nested type: TimestampFlags

    [Flags]
    enum TimestampFlags : byte
    {
        Creation        = 1 << 0,
        Modification    = 1 << 1,
        Access          = 1 << 2,
        AttributeChange = 1 << 3,
        Backup          = 1 << 4,
        Expiration      = 1 << 5,
        Effective       = 1 << 6,
        LongFormat      = 1 << 7
    }

#endregion
}