Skip to content

Commit bcae86b

Browse files
authored
Ensure correct timezone is set on filetimes (#45)
1 parent 80983a9 commit bcae86b

File tree

7 files changed

+13
-13
lines changed

7 files changed

+13
-13
lines changed

Library/DiscUtils.Btrfs/Base/TimeSpec.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ internal class TimeSpec : IByteArraySerializable
3939
/// </summary>
4040
public uint Nanoseconds { get; internal set; }
4141

42-
public DateTimeOffset Value => DateTimeOffset.FromUnixTimeSeconds(Seconds).AddTicks(Nanoseconds / 100);
42+
public DateTimeOffset Value => DateTimeOffset.FromUnixTimeSeconds(Seconds).AddTicks(Nanoseconds / 100).UtcDateTime;
4343

4444
public int Size => Length;
4545

46-
public DateTimeOffset DateTime => DateTimeOffset.FromUnixTimeSeconds(Seconds).AddTicks(Nanoseconds / 100);
46+
public DateTimeOffset DateTime => DateTimeOffset.FromUnixTimeSeconds(Seconds).AddTicks(Nanoseconds / 100).UtcDateTime;
4747

4848
public int ReadFrom(ReadOnlySpan<byte> buffer)
4949
{

Library/DiscUtils.Core/Archives/TarHeader.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public TarHeader(ReadOnlySpan<byte> buffer)
7575
OwnerId = (int)OctalToLong(ReadNullTerminatedString(buffer.Slice(108, 8)));
7676
GroupId = (int)OctalToLong(ReadNullTerminatedString(buffer.Slice(116, 8)));
7777
FileLength = ParseFileLength(buffer.Slice(124, 12));
78-
ModificationTime = DateTimeOffset.FromUnixTimeSeconds((uint)OctalToLong(ReadNullTerminatedString(buffer.Slice(136, 12))));
78+
ModificationTime = DateTimeOffset.FromUnixTimeSeconds((uint)OctalToLong(ReadNullTerminatedString(buffer.Slice(136, 12)))).UtcDateTime;
7979
CheckSum = (int)OctalToLong(ReadNullTerminatedString(buffer.Slice(148, 8)));
8080
FileType = (TarFileType)buffer[156];
8181
LinkName = latin1Encoding.GetString(ReadNullTerminatedString(buffer.Slice(157, 100)));
@@ -93,8 +93,8 @@ public TarHeader(ReadOnlySpan<byte> buffer)
9393
FileName = $"{latin1Encoding.GetString(prefix)}/{FileName}";
9494
}
9595

96-
LastAccessTime = DateTimeOffset.FromUnixTimeSeconds((uint)OctalToLong(ReadNullTerminatedString(buffer.Slice(476, 12))));
97-
CreationTime = DateTimeOffset.FromUnixTimeSeconds((uint)OctalToLong(ReadNullTerminatedString(buffer.Slice(488, 12))));
96+
LastAccessTime = DateTimeOffset.FromUnixTimeSeconds((uint)OctalToLong(ReadNullTerminatedString(buffer.Slice(476, 12)))).UtcDateTime;
97+
CreationTime = DateTimeOffset.FromUnixTimeSeconds((uint)OctalToLong(ReadNullTerminatedString(buffer.Slice(488, 12)))).UtcDateTime;
9898
}
9999

100100
public static bool IsValid(ReadOnlySpan<byte> buffer)

Library/DiscUtils.Ext/File.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,21 @@ public File(Context context, uint inodeNum, Inode inode)
4848

4949
public DateTime LastAccessTimeUtc
5050
{
51-
get => DateTimeOffset.FromUnixTimeSeconds(Inode.AccessTime).DateTime;
51+
get => DateTimeOffset.FromUnixTimeSeconds(Inode.AccessTime).UtcDateTime;
5252

5353
set => throw new NotImplementedException();
5454
}
5555

5656
public DateTime LastWriteTimeUtc
5757
{
58-
get => DateTimeOffset.FromUnixTimeSeconds(Inode.ModificationTime).DateTime;
58+
get => DateTimeOffset.FromUnixTimeSeconds(Inode.ModificationTime).UtcDateTime;
5959

6060
set => throw new NotImplementedException();
6161
}
6262

6363
public DateTime CreationTimeUtc
6464
{
65-
get => DateTimeOffset.FromUnixTimeSeconds(Inode.CreationTime).DateTime;
65+
get => DateTimeOffset.FromUnixTimeSeconds(Inode.CreationTime).UtcDateTime;
6666

6767
set => throw new NotImplementedException();
6868
}
@@ -114,4 +114,4 @@ private static FileAttributes FromMode(uint mode)
114114
{
115115
return Utilities.FileAttributesFromUnixFileType((UnixFileType)((mode >> 12) & 0xF));
116116
}
117-
}
117+
}

Library/DiscUtils.Lvm/Metadata.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ internal static DateTime ParseDateTimeValue(ReadOnlySpan<char> value)
128128
return DateTime.MaxValue;
129129
}
130130

131-
return DateTimeOffset.FromUnixTimeSeconds((long)numeric).DateTime;
131+
return DateTimeOffset.FromUnixTimeSeconds((long)numeric).UtcDateTime;
132132
}
133133

134134
internal static ulong ParseNumericValue(ReadOnlySpan<char> value)

Library/DiscUtils.SquashFs/Inode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public virtual int ReadFrom(ReadOnlySpan<byte> buffer)
5151
Mode = EndianUtilities.ToUInt16LittleEndian(buffer.Slice(2));
5252
UidKey = EndianUtilities.ToUInt16LittleEndian(buffer.Slice(4));
5353
GidKey = EndianUtilities.ToUInt16LittleEndian(buffer.Slice(6));
54-
ModificationTime = DateTimeOffset.FromUnixTimeSeconds(EndianUtilities.ToUInt32LittleEndian(buffer.Slice(8))).DateTime;
54+
ModificationTime = DateTimeOffset.FromUnixTimeSeconds(EndianUtilities.ToUInt32LittleEndian(buffer.Slice(8))).UtcDateTime;
5555
InodeNumber = EndianUtilities.ToUInt32LittleEndian(buffer.Slice(12));
5656
return 16;
5757
}

Library/DiscUtils.SquashFs/SuperBlock.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public int ReadFrom(ReadOnlySpan<byte> buffer)
7878
}
7979

8080
InodesCount = EndianUtilities.ToUInt32LittleEndian(buffer.Slice(4));
81-
CreationTime = DateTimeOffset.FromUnixTimeSeconds(EndianUtilities.ToUInt32LittleEndian(buffer.Slice(8))).DateTime;
81+
CreationTime = DateTimeOffset.FromUnixTimeSeconds(EndianUtilities.ToUInt32LittleEndian(buffer.Slice(8))).UtcDateTime;
8282
BlockSize = EndianUtilities.ToUInt32LittleEndian(buffer.Slice(12));
8383
FragmentsCount = EndianUtilities.ToUInt32LittleEndian(buffer.Slice(16));
8484
Compression = (SquashFileSystemCompressionKind)EndianUtilities.ToUInt16LittleEndian(buffer.Slice(20));

Library/DiscUtils.Xfs/Inode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ private static DateTime ReadTimestamp(ReadOnlySpan<byte> buffer)
265265
{
266266
var seconds = EndianUtilities.ToUInt32BigEndian(buffer);
267267
var nanoSeconds = EndianUtilities.ToUInt32BigEndian(buffer.Slice(4));
268-
return DateTimeOffset.FromUnixTimeSeconds(seconds).AddTicks(nanoSeconds / 100).LocalDateTime;
268+
return DateTimeOffset.FromUnixTimeSeconds(seconds).AddTicks(nanoSeconds / 100).UtcDateTime;
269269
}
270270

271271
void IByteArraySerializable.WriteTo(Span<byte> buffer)

0 commit comments

Comments
 (0)