diff --git a/Structs/Filesystems.cs b/Structs/Filesystems.cs index 19eeb54b5..e7e6e176a 100644 --- a/Structs/Filesystems.cs +++ b/Structs/Filesystems.cs @@ -161,62 +161,60 @@ namespace DiscImageChef.CommonTypes.Structs public long Blocks; /// File block size in bytes public long BlockSize; - /// If file points to a device, device number - public ulong DeviceNo; - /// POSIX group ID - public ulong GID; - - /// inode number for this file + /// If file points to a device, device number. Null if the underlying filesystem does not support them. + public ulong? DeviceNo; + /// POSIX group ID. Null if the underlying filesystem does not support them. + public ulong? GID; + /// inode number for this file (or other unique identifier for the volume) public ulong Inode; /// File length in bytes public long Length; - /// Number of hard links pointing to this file + /// Number of hard links pointing to this file (. and .. entries count as hard links) public ulong Links; - /// POSIX permissions/mode for this file - public uint Mode; - /// POSIX owner ID - public ulong UID; + /// POSIX permissions/mode for this file. Null if the underlying filesystem does not support them. + public uint? Mode; + /// POSIX owner ID. Null if the underlying filesystem does not support them. + public ulong? UID; + /// File creation date in UTC. Null if the underlying filesystem does not support them. + public DateTime? CreationTimeUtc { get; set; } + /// File last access date in UTC. Null if the underlying filesystem does not support them. + public DateTime? AccessTimeUtc { get; set; } + /// File attributes change date in UTC. Null if the underlying filesystem does not support them. + public DateTime? StatusChangeTimeUtc { get; set; } + /// File last backup date in UTC. Null if the underlying filesystem does not support them. + public DateTime? BackupTimeUtc { get; set; } + /// File last modification date in UTC. Null if the underlying filesystem does not support them. + public DateTime? LastWriteTimeUtc { get; set; } - /// File creation date in UTC - public DateTime CreationTimeUtc { get; set; } - /// File last access date in UTC - public DateTime AccessTimeUtc { get; set; } - /// File attributes change date in UTC - public DateTime StatusChangeTimeUtc { get; set; } - /// File last backup date in UTC - public DateTime BackupTimeUtc { get; set; } - /// File last modification date in UTC - public DateTime LastWriteTimeUtc { get; set; } - - /// File creation date - public DateTime CreationTime + /// File creation date. Null if the underlying filesystem does not support them. + public DateTime? CreationTime { - get => CreationTimeUtc.ToLocalTime(); - set => CreationTimeUtc = value.ToUniversalTime(); + get => CreationTimeUtc?.ToLocalTime(); + set => CreationTimeUtc = value?.ToUniversalTime(); } - /// File last access date - public DateTime AccessTime + /// File last access date. Null if the underlying filesystem does not support them. + public DateTime? AccessTime { - get => AccessTimeUtc.ToLocalTime(); - set => AccessTimeUtc = value.ToUniversalTime(); + get => AccessTimeUtc?.ToLocalTime(); + set => AccessTimeUtc = value?.ToUniversalTime(); } - /// File attributes change date - public DateTime StatusChangeTime + /// File attributes change date. Null if the underlying filesystem does not support them. + public DateTime? StatusChangeTime { - get => StatusChangeTimeUtc.ToLocalTime(); - set => StatusChangeTimeUtc = value.ToUniversalTime(); + get => StatusChangeTimeUtc?.ToLocalTime(); + set => StatusChangeTimeUtc = value?.ToUniversalTime(); } - /// File last backup date - public DateTime BackupTime + /// File last backup date. Null if the underlying filesystem does not support them. + public DateTime? BackupTime { - get => BackupTimeUtc.ToLocalTime(); - set => BackupTimeUtc = value.ToUniversalTime(); + get => BackupTimeUtc?.ToLocalTime(); + set => BackupTimeUtc = value?.ToUniversalTime(); } - /// File last modification date - public DateTime LastWriteTime + /// File last modification date. Null if the underlying filesystem does not support them. + public DateTime? LastWriteTime { - get => LastWriteTimeUtc.ToLocalTime(); - set => LastWriteTimeUtc = value.ToUniversalTime(); + get => LastWriteTimeUtc?.ToLocalTime(); + set => LastWriteTimeUtc = value?.ToUniversalTime(); } } @@ -236,7 +234,6 @@ namespace DiscImageChef.CommonTypes.Structs public FileSystemId Id; /// ID of plugin for this file public Guid PluginId; - /// Filesystem type public string Type;