From 263d8f6aefce0daece416075f8cb045a426f642f Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Jan 2025 21:40:45 -0500 Subject: [PATCH] Reduce flakiness of flag setting --- SabreTools.DatTools/Rebuilder.cs | 2 +- .../Archives/SevenZipArchive.cs | 8 ++++---- SabreTools.FileTypes/Archives/TapeArchive.cs | 8 ++++---- SabreTools.FileTypes/Archives/ZipArchive.cs | 8 ++++---- SabreTools.FileTypes/BaseArchive.cs | 18 +++++++++++++----- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/SabreTools.DatTools/Rebuilder.cs b/SabreTools.DatTools/Rebuilder.cs index 209f229b..34f17b5c 100644 --- a/SabreTools.DatTools/Rebuilder.cs +++ b/SabreTools.DatTools/Rebuilder.cs @@ -826,7 +826,7 @@ namespace SabreTools.DatTools { Folder? outputArchive = FileTypeTool.CreateFolderType(outputFormat); if (outputArchive is BaseArchive baseArchive && date) - baseArchive.UseDates = date; + baseArchive.SetRealDates(date); // Set the depth fields where appropriate if (outputArchive is GZipArchive gzipArchive) diff --git a/SabreTools.FileTypes/Archives/SevenZipArchive.cs b/SabreTools.FileTypes/Archives/SevenZipArchive.cs index 66423c35..0369c695 100644 --- a/SabreTools.FileTypes/Archives/SevenZipArchive.cs +++ b/SabreTools.FileTypes/Archives/SevenZipArchive.cs @@ -424,7 +424,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)(inputStream.Length); DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; @@ -501,7 +501,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)(inputStream.Length); DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; @@ -639,7 +639,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)new FileInfo(inputFiles[index]).Length; DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date?.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date?.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; @@ -721,7 +721,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)(new FileInfo(inputFiles[-index - 1]).Length); DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFiles[-index - 1].Date) && DateTime.TryParse(baseFiles[-index - 1].Date?.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFiles[-index - 1].Date) && DateTime.TryParse(baseFiles[-index - 1].Date?.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; diff --git a/SabreTools.FileTypes/Archives/TapeArchive.cs b/SabreTools.FileTypes/Archives/TapeArchive.cs index 7542012f..465d371a 100644 --- a/SabreTools.FileTypes/Archives/TapeArchive.cs +++ b/SabreTools.FileTypes/Archives/TapeArchive.cs @@ -320,7 +320,7 @@ namespace SabreTools.FileTypes.Archives { // Get temporary date-time if possible DateTime? usableDate = null; - if (UseDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out DateTime dt)) + if (_realDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out DateTime dt)) usableDate = dt; // Copy the input stream to the output @@ -375,7 +375,7 @@ namespace SabreTools.FileTypes.Archives // Get temporary date-time if possible DateTime? usableDate = null; - if (UseDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out DateTime dt)) + if (_realDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out DateTime dt)) usableDate = dt; // If we have the input file, add it now @@ -488,7 +488,7 @@ namespace SabreTools.FileTypes.Archives // Get temporary date-time if possible DateTime? usableDate = null; - if (UseDates && !string.IsNullOrEmpty(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date?.Replace('\\', '/'), out DateTime dt)) + if (_realDates && !string.IsNullOrEmpty(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date?.Replace('\\', '/'), out DateTime dt)) usableDate = dt; // Copy the input stream to the output @@ -550,7 +550,7 @@ namespace SabreTools.FileTypes.Archives { // Get temporary date-time if possible DateTime? usableDate = null; - if (UseDates && !string.IsNullOrEmpty(baseFiles[-index - 1].Date) && DateTime.TryParse(baseFiles[-index - 1].Date?.Replace('\\', '/'), out DateTime dt)) + if (_realDates && !string.IsNullOrEmpty(baseFiles[-index - 1].Date) && DateTime.TryParse(baseFiles[-index - 1].Date?.Replace('\\', '/'), out DateTime dt)) usableDate = dt; // Copy the input file to the output diff --git a/SabreTools.FileTypes/Archives/ZipArchive.cs b/SabreTools.FileTypes/Archives/ZipArchive.cs index a722f4f4..c82ea640 100644 --- a/SabreTools.FileTypes/Archives/ZipArchive.cs +++ b/SabreTools.FileTypes/Archives/ZipArchive.cs @@ -605,7 +605,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)(inputStream.Length); DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; @@ -679,7 +679,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)(inputStream.Length); DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFile.Date) && DateTime.TryParse(baseFile.Date!.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; @@ -813,7 +813,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)(new FileInfo(inputFiles[index]).Length); DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date?.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFiles[index].Date) && DateTime.TryParse(baseFiles[index].Date?.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; @@ -895,7 +895,7 @@ namespace SabreTools.FileTypes.Archives ulong istreamSize = (ulong)(new FileInfo(inputFiles[-index - 1]).Length); DateTime dt = DateTime.Now; - if (UseDates && !string.IsNullOrEmpty(baseFiles[-index - 1].Date) && DateTime.TryParse(baseFiles[-index - 1].Date?.Replace('\\', '/'), out dt)) + if (_realDates && !string.IsNullOrEmpty(baseFiles[-index - 1].Date) && DateTime.TryParse(baseFiles[-index - 1].Date?.Replace('\\', '/'), out dt)) { long msDosDateTime = DateTimeHelper.ConvertToMsDosTimeFormat(dt); TimeStamps ts = new() { ModTime = msDosDateTime }; diff --git a/SabreTools.FileTypes/BaseArchive.cs b/SabreTools.FileTypes/BaseArchive.cs index 00a9750b..62dab138 100644 --- a/SabreTools.FileTypes/BaseArchive.cs +++ b/SabreTools.FileTypes/BaseArchive.cs @@ -7,15 +7,15 @@ namespace SabreTools.FileTypes { #region Fields - /// - /// Determines if dates are read or written - /// - public bool UseDates { get; set; } = false; - #endregion #region Protected instance variables + /// + /// Determines if real dates are written + /// + protected bool _realDates = false; + /// /// Buffer size used by archives /// @@ -68,6 +68,14 @@ namespace SabreTools.FileTypes #region Writing + /// + /// Set if real dates are written + /// + public void SetRealDates(bool realDates) + { + _realDates = realDates; + } + /// public override abstract bool Write(string inputFile, string outDir, BaseFile? baseFile);