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;