diff --git a/DiscImageChef.Filters/AppleDouble.cs b/DiscImageChef.Filters/AppleDouble.cs
index 258f6f31e..5665a8cec 100644
--- a/DiscImageChef.Filters/AppleDouble.cs
+++ b/DiscImageChef.Filters/AppleDouble.cs
@@ -131,9 +131,11 @@ namespace DiscImageChef.Filters
string filenameNoExt = Path.GetFileNameWithoutExtension(path);
string parentFolder = Path.GetDirectoryName(path);
+ parentFolder = parentFolder ?? "";
+ if(filename is null || filenameNoExt is null) return false;
+
// Prepend data fork name with "R."
- string ProDosAppleDouble =
- Path.Combine(parentFolder ?? throw new InvalidOperationException(), "R." + filename);
+ string ProDosAppleDouble = Path.Combine(parentFolder, "R." + filename);
// Prepend data fork name with '%'
string UNIXAppleDouble = Path.Combine(parentFolder, "%" + filename);
// Change file extension to ADF
@@ -141,8 +143,7 @@ namespace DiscImageChef.Filters
// Change file extension to adf
string DOSAppleDoubleLower = Path.Combine(parentFolder, filenameNoExt + ".adf");
// Store AppleDouble header file in ".AppleDouble" folder with same name
- string NetatalkAppleDouble =
- Path.Combine(parentFolder, ".AppleDouble", filename ?? throw new InvalidOperationException());
+ string NetatalkAppleDouble = Path.Combine(parentFolder, ".AppleDouble", filename);
// Store AppleDouble header file in "resource.frk" folder with same name
string DAVEAppleDouble = Path.Combine(parentFolder, "resource.frk", filename);
// Prepend data fork name with "._"
@@ -289,9 +290,11 @@ namespace DiscImageChef.Filters
string filenameNoExt = Path.GetFileNameWithoutExtension(path);
string parentFolder = Path.GetDirectoryName(path);
+ parentFolder = parentFolder ?? "";
+ if(filename is null || filenameNoExt is null) throw new ArgumentNullException(nameof(path));
+
// Prepend data fork name with "R."
- string ProDosAppleDouble =
- Path.Combine(parentFolder ?? throw new InvalidOperationException(), "R." + filename);
+ string ProDosAppleDouble = Path.Combine(parentFolder, "R." + filename);
// Prepend data fork name with '%'
string UNIXAppleDouble = Path.Combine(parentFolder, "%" + filename);
// Change file extension to ADF
@@ -299,8 +302,7 @@ namespace DiscImageChef.Filters
// Change file extension to adf
string DOSAppleDoubleLower = Path.Combine(parentFolder, filenameNoExt + ".adf");
// Store AppleDouble header file in ".AppleDouble" folder with same name
- string NetatalkAppleDouble =
- Path.Combine(parentFolder, ".AppleDouble", filename ?? throw new InvalidOperationException());
+ string NetatalkAppleDouble = Path.Combine(parentFolder, ".AppleDouble", filename);
// Store AppleDouble header file in "resource.frk" folder with same name
string DAVEAppleDouble = Path.Combine(parentFolder, "resource.frk", filename);
// Prepend data fork name with "._"
@@ -543,64 +545,64 @@ namespace DiscImageChef.Filters
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct AppleDoubleHeader
{
- public uint magic;
- public uint version;
+ public readonly uint magic;
+ public readonly uint version;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
- public byte[] homeFilesystem;
- public ushort entries;
+ public readonly byte[] homeFilesystem;
+ public readonly ushort entries;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct AppleDoubleEntry
{
- public uint id;
- public uint offset;
- public uint length;
+ public uint id;
+ public readonly uint offset;
+ public uint length;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct AppleDoubleFileDates
{
- public uint creationDate;
- public uint modificationDate;
- public uint backupDate;
- public uint accessDate;
+ public readonly uint creationDate;
+ public readonly uint modificationDate;
+ public readonly uint backupDate;
+ public readonly uint accessDate;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct AppleDoubleMacFileInfo
{
- public uint creationDate;
- public uint modificationDate;
- public uint backupDate;
- public uint accessDate;
+ public readonly uint creationDate;
+ public readonly uint modificationDate;
+ public readonly uint backupDate;
+ public readonly uint accessDate;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct AppleDoubleUNIXFileInfo
{
- public uint creationDate;
- public uint accessDate;
- public uint modificationDate;
+ public readonly uint creationDate;
+ public readonly uint accessDate;
+ public readonly uint modificationDate;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct AppleDoubleDOSFileInfo
{
- public ushort modificationDate;
- public ushort modificationTime;
- public ushort attributes;
+ public readonly ushort modificationDate;
+ public readonly ushort modificationTime;
+ public readonly ushort attributes;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct AppleDoubleProDOSFileInfo
{
- public uint creationDate;
- public uint modificationDate;
- public uint backupDate;
- public ushort access;
- public ushort fileType;
- public uint auxType;
+ public readonly uint creationDate;
+ public readonly uint modificationDate;
+ public readonly uint backupDate;
+ public readonly ushort access;
+ public readonly ushort fileType;
+ public readonly uint auxType;
}
}
}
\ No newline at end of file
diff --git a/DiscImageChef.Filters/PCExchange.cs b/DiscImageChef.Filters/PCExchange.cs
index 44b7a96c1..f06fc5112 100644
--- a/DiscImageChef.Filters/PCExchange.cs
+++ b/DiscImageChef.Filters/PCExchange.cs
@@ -99,8 +99,9 @@ namespace DiscImageChef.Filters
{
string parentFolder = Path.GetDirectoryName(path);
- if(!File.Exists(Path.Combine(parentFolder ?? throw new InvalidOperationException(), FINDER_INFO)))
- return false;
+ parentFolder = parentFolder ?? "";
+
+ if(!File.Exists(Path.Combine(parentFolder, FINDER_INFO))) return false;
if(!Directory.Exists(Path.Combine(parentFolder, RESOURCES))) return false;
@@ -164,9 +165,10 @@ namespace DiscImageChef.Filters
string parentFolder = Path.GetDirectoryName(path);
string baseFilename = Path.GetFileName(path);
+ parentFolder = parentFolder ?? "";
+
FileStream finderDatStream =
- new FileStream(Path.Combine(parentFolder ?? throw new InvalidOperationException(), FINDER_INFO),
- FileMode.Open, FileAccess.Read);
+ new FileStream(Path.Combine(parentFolder, FINDER_INFO), FileMode.Open, FileAccess.Read);
while(finderDatStream.Position + 0x5C <= finderDatStream.Length)
{
@@ -223,59 +225,59 @@ namespace DiscImageChef.Filters
/// Illegal characters for FAT get substituted with '_' both here and in FAT's LFN entry.
///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
- public byte[] macName;
+ public readonly byte[] macName;
///
/// File type
///
- public uint type;
+ public readonly uint type;
///
/// File creator
///
- public uint creator;
+ public readonly uint creator;
///
/// Finder flags
///
- public ushort fdFlags;
+ public readonly ushort fdFlags;
///
/// File's icon vertical position within its window
///
- public ushort verticalPosition;
+ public readonly ushort verticalPosition;
///
/// File's icon horizontal position within its window
///
- public ushort horizontalPosition;
+ public readonly ushort horizontalPosition;
///
/// Unknown, all bytes are empty but last, except in volume's label entry
///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
- public byte[] unknown1;
+ public readonly byte[] unknown1;
///
/// File's creation date
///
- public uint creationDate;
+ public readonly uint creationDate;
///
/// File's modification date
///
- public uint modificationDate;
+ public readonly uint modificationDate;
///
/// File's last backup date
///
- public uint backupDate;
+ public readonly uint backupDate;
///
/// Unknown, but is unique, starts 0x7FFFFFFF and counts in reverse.
/// Probably file ID for alias look up?
///
- public uint unknown2;
+ public readonly uint unknown2;
///
/// Name as in FAT entry (not LFN).
/// Resource fork file is always using this name, never LFN.
///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]
- public byte[] dosName;
+ public readonly byte[] dosName;
///
/// Unknown, flags?
///
- public byte unknown3;
+ public readonly byte unknown3;
}
}
}
\ No newline at end of file