diff --git a/DiscImageChef.Core/PluginBase.cs b/DiscImageChef.Core/PluginBase.cs index da3e26c2c..7000d8f78 100644 --- a/DiscImageChef.Core/PluginBase.cs +++ b/DiscImageChef.Core/PluginBase.cs @@ -37,6 +37,7 @@ using DiscImageChef.ImagePlugins; using DiscImageChef.PartPlugins; using DiscImageChef.Filesystems; using DiscImageChef.Console; +using System.Text; namespace DiscImageChef.Core { @@ -53,7 +54,7 @@ namespace DiscImageChef.Core ImagePluginsList = new SortedDictionary(); } - public void RegisterAllPlugins() + public void RegisterAllPlugins(Encoding encoding = null) { Assembly assembly; @@ -101,7 +102,11 @@ namespace DiscImageChef.Core { if(type.IsSubclassOf(typeof(Filesystem))) { - Filesystem plugin = (Filesystem)type.GetConstructor(Type.EmptyTypes).Invoke(new object[] { }); + Filesystem plugin; + if(encoding != null) + plugin = (Filesystem)type.GetConstructor(new Type[] { encoding.GetType() }).Invoke(new object[] { encoding }); + else + plugin = (Filesystem)type.GetConstructor(Type.EmptyTypes).Invoke(new object[] { }); RegisterPlugin(plugin); } } diff --git a/DiscImageChef.Core/Sidecar/Sidecar.cs b/DiscImageChef.Core/Sidecar/Sidecar.cs index 7b78ec0fa..128177e6a 100644 --- a/DiscImageChef.Core/Sidecar/Sidecar.cs +++ b/DiscImageChef.Core/Sidecar/Sidecar.cs @@ -45,11 +45,11 @@ namespace DiscImageChef.Core { public static partial class Sidecar { - public static CICMMetadataType Create(ImagePlugin image, string imagePath, System.Guid filterId) + public static CICMMetadataType Create(ImagePlugin image, string imagePath, System.Guid filterId, System.Text.Encoding encoding) { CICMMetadataType sidecar = new CICMMetadataType(); PluginBase plugins = new PluginBase(); - plugins.RegisterAllPlugins(); + plugins.RegisterAllPlugins(encoding); FileInfo fi = new FileInfo(imagePath); FileStream fs = new FileStream(imagePath, FileMode.Open, FileAccess.Read); diff --git a/DiscImageChef.Filesystems/AODOS.cs b/DiscImageChef.Filesystems/AODOS.cs index 0fdf0844d..a47ff0f19 100644 --- a/DiscImageChef.Filesystems/AODOS.cs +++ b/DiscImageChef.Filesystems/AODOS.cs @@ -50,6 +50,13 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("koi8-r"); } + public AODOS(Encoding encoding) + { + Name = "Alexander Osipov DOS file system"; + PluginUUID = new Guid("668E5039-9DDD-442A-BE1B-A315D6E38E26"); + CurrentEncoding = Encoding.GetEncoding("koi8-r"); + } + public AODOS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Alexander Osipov DOS file system"; diff --git a/DiscImageChef.Filesystems/APFS.cs b/DiscImageChef.Filesystems/APFS.cs index 25d3b5a7d..89613daad 100644 --- a/DiscImageChef.Filesystems/APFS.cs +++ b/DiscImageChef.Filesystems/APFS.cs @@ -50,6 +50,13 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public APFS(Encoding encoding) + { + Name = "Apple File System"; + PluginUUID = new Guid("A4060F9D-2909-42E2-9D95-DB31FA7EA797"); + CurrentEncoding = Encoding.UTF8; + } + public APFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Apple File System"; diff --git a/DiscImageChef.Filesystems/Acorn.cs b/DiscImageChef.Filesystems/Acorn.cs index d414ffaa2..d5e7bcdf5 100644 --- a/DiscImageChef.Filesystems/Acorn.cs +++ b/DiscImageChef.Filesystems/Acorn.cs @@ -73,6 +73,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); } + public AcornADFS(Encoding encoding) + { + Name = "Acorn Advanced Disc Filing System"; + PluginUUID = new Guid("BAFC1E50-9C64-4CD3-8400-80628CC27AFA"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); + else + CurrentEncoding = encoding; + } + public AcornADFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Acorn Advanced Disc Filing System"; diff --git a/DiscImageChef.Filesystems/AmigaDOS.cs b/DiscImageChef.Filesystems/AmigaDOS.cs index c7597a4f0..6b3725f35 100644 --- a/DiscImageChef.Filesystems/AmigaDOS.cs +++ b/DiscImageChef.Filesystems/AmigaDOS.cs @@ -48,6 +48,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); } + public AmigaDOSPlugin(Encoding encoding) + { + Name = "Amiga DOS filesystem"; + PluginUUID = new Guid("3c882400-208c-427d-a086-9119852a1bc7"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); + else + CurrentEncoding = encoding; + } + public AmigaDOSPlugin(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Amiga DOS filesystem"; diff --git a/DiscImageChef.Filesystems/AppleDOS/AppleDOS.cs b/DiscImageChef.Filesystems/AppleDOS/AppleDOS.cs index 6762b5433..cb2727ce2 100644 --- a/DiscImageChef.Filesystems/AppleDOS/AppleDOS.cs +++ b/DiscImageChef.Filesystems/AppleDOS/AppleDOS.cs @@ -80,6 +80,14 @@ namespace DiscImageChef.Filesystems.AppleDOS CurrentEncoding = new Claunia.Encoding.LisaRoman(); } + public AppleDOS(Encoding encoding) + { + Name = "Apple DOS File System"; + PluginUUID = new Guid("8658A1E9-B2E7-4BCC-9638-157A31B0A700\n"); + // TODO: Until Apple ][ encoding is implemented + CurrentEncoding = new Claunia.Encoding.LisaRoman(); + } + public AppleDOS(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { device = imagePlugin; diff --git a/DiscImageChef.Filesystems/AppleHFS.cs b/DiscImageChef.Filesystems/AppleHFS.cs index dc9e81931..8893783b6 100644 --- a/DiscImageChef.Filesystems/AppleHFS.cs +++ b/DiscImageChef.Filesystems/AppleHFS.cs @@ -63,6 +63,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("macintosh"); } + public AppleHFS(Encoding encoding) + { + Name = "Apple Hierarchical File System"; + PluginUUID = new Guid("36405F8D-0D26-6ECC-0BBB-1D5225FF404F"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("macintosh"); + else + CurrentEncoding = encoding; + } + public AppleHFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Apple Hierarchical File System"; diff --git a/DiscImageChef.Filesystems/AppleHFSPlus.cs b/DiscImageChef.Filesystems/AppleHFSPlus.cs index 33d087447..7e8b36f39 100644 --- a/DiscImageChef.Filesystems/AppleHFSPlus.cs +++ b/DiscImageChef.Filesystems/AppleHFSPlus.cs @@ -62,6 +62,13 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.BigEndianUnicode; } + public AppleHFSPlus(Encoding encoding) + { + Name = "Apple HFS+ filesystem"; + PluginUUID = new Guid("36405F8D-0D26-6EBE-436F-62F0586B4F08"); + CurrentEncoding = Encoding.BigEndianUnicode; + } + public AppleHFSPlus(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Apple HFS+ filesystem"; diff --git a/DiscImageChef.Filesystems/AppleMFS/AppleMFS.cs b/DiscImageChef.Filesystems/AppleMFS/AppleMFS.cs index 5df94ebad..df610f450 100644 --- a/DiscImageChef.Filesystems/AppleMFS/AppleMFS.cs +++ b/DiscImageChef.Filesystems/AppleMFS/AppleMFS.cs @@ -69,6 +69,16 @@ namespace DiscImageChef.Filesystems.AppleMFS CurrentEncoding = Encoding.GetEncoding("macintosh"); } + public AppleMFS(Encoding encoding) + { + Name = "Apple Macintosh File System"; + PluginUUID = new Guid("36405F8D-0D26-4066-6538-5DBF5D065C3A"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("macintosh"); + else + CurrentEncoding = encoding; + } + public AppleMFS(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Apple Macintosh File System"; diff --git a/DiscImageChef.Filesystems/AtheOS.cs b/DiscImageChef.Filesystems/AtheOS.cs index e00ce5762..a88a5594a 100644 --- a/DiscImageChef.Filesystems/AtheOS.cs +++ b/DiscImageChef.Filesystems/AtheOS.cs @@ -55,6 +55,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public AtheOS(Encoding encoding) + { + Name = "AtheOS Filesystem"; + PluginUUID = new Guid("AAB2C4F1-DC07-49EE-A948-576CC51B58C5"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public AtheOS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "AtheOS Filesystem"; diff --git a/DiscImageChef.Filesystems/BFS.cs b/DiscImageChef.Filesystems/BFS.cs index bfd6c8031..b5449195c 100644 --- a/DiscImageChef.Filesystems/BFS.cs +++ b/DiscImageChef.Filesystems/BFS.cs @@ -60,6 +60,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public BeFS(Encoding encoding) + { + Name = "Be Filesystem"; + PluginUUID = new Guid("dc8572b3-b6ad-46e4-8de9-cbe123ff6672"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public BeFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Be Filesystem"; diff --git a/DiscImageChef.Filesystems/BTRFS.cs b/DiscImageChef.Filesystems/BTRFS.cs index 888850620..cf83948a3 100644 --- a/DiscImageChef.Filesystems/BTRFS.cs +++ b/DiscImageChef.Filesystems/BTRFS.cs @@ -53,6 +53,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public BTRFS(Encoding encoding) + { + Name = "B-tree file system"; + PluginUUID = new Guid("C904CF15-5222-446B-B7DB-02EAC5D781B3"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public BTRFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "B-tree file system"; diff --git a/DiscImageChef.Filesystems/CBM.cs b/DiscImageChef.Filesystems/CBM.cs index fbc19e54c..02e163854 100644 --- a/DiscImageChef.Filesystems/CBM.cs +++ b/DiscImageChef.Filesystems/CBM.cs @@ -47,6 +47,13 @@ namespace DiscImageChef.Filesystems CurrentEncoding = new Claunia.Encoding.PETSCII(); } + public CBM(Encoding encoding) + { + Name = "Commodore file system"; + PluginUUID = new Guid("D104744E-A376-450C-BAC0-1347C93F983B"); + CurrentEncoding = new Claunia.Encoding.PETSCII(); + } + public CBM(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Commodore file system"; diff --git a/DiscImageChef.Filesystems/CPM/CPM.cs b/DiscImageChef.Filesystems/CPM/CPM.cs index 46d17e477..3953ed6c0 100644 --- a/DiscImageChef.Filesystems/CPM/CPM.cs +++ b/DiscImageChef.Filesystems/CPM/CPM.cs @@ -117,6 +117,16 @@ namespace DiscImageChef.Filesystems.CPM CurrentEncoding = Encoding.GetEncoding("IBM437"); } + public CPM(Encoding encoding) + { + Name = "CP/M File System"; + PluginUUID = new Guid("AA2B8585-41DF-4E3B-8A35-D1A935E2F8A1"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("IBM437"); + else + CurrentEncoding = encoding; + } + public CPM(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { device = imagePlugin; diff --git a/DiscImageChef.Filesystems/Cram.cs b/DiscImageChef.Filesystems/Cram.cs index 99bb5764a..f0ee49a01 100644 --- a/DiscImageChef.Filesystems/Cram.cs +++ b/DiscImageChef.Filesystems/Cram.cs @@ -47,6 +47,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public Cram(Encoding encoding) + { + Name = "Cram filesystem"; + PluginUUID = new Guid("F8F6E46F-7A2A-48E3-9C0A-46AF4DC29E09"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public Cram(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Cram filesystem"; diff --git a/DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj b/DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj index d979b67d0..a81b38adf 100644 --- a/DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj +++ b/DiscImageChef.Filesystems/DiscImageChef.Filesystems.csproj @@ -34,7 +34,7 @@ - ..\packages\Claunia.Encoding.1.1.0\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll + ..\packages\Claunia.Encoding.1.2.0\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll diff --git a/DiscImageChef.Filesystems/ECMA67.cs b/DiscImageChef.Filesystems/ECMA67.cs index 990ad03c2..c145397cd 100644 --- a/DiscImageChef.Filesystems/ECMA67.cs +++ b/DiscImageChef.Filesystems/ECMA67.cs @@ -49,6 +49,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); } + public ECMA67(Encoding encoding) + { + Name = "ECMA-67"; + PluginUUID = new Guid("62A2D44A-CBC1-4377-B4B6-28C5C92034A1"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); + else + CurrentEncoding = encoding; + } + public ECMA67(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "ECMA-67"; diff --git a/DiscImageChef.Filesystems/EFS.cs b/DiscImageChef.Filesystems/EFS.cs index 16a2aa2fe..3fa7d9047 100644 --- a/DiscImageChef.Filesystems/EFS.cs +++ b/DiscImageChef.Filesystems/EFS.cs @@ -101,6 +101,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public EFS(Encoding encoding) + { + Name = "Extent File System Plugin"; + PluginUUID = new Guid("52A43F90-9AF3-4391-ADFE-65598DEEABAB"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public EFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Extent File System Plugin"; diff --git a/DiscImageChef.Filesystems/F2FS.cs b/DiscImageChef.Filesystems/F2FS.cs index 8eb0abfe0..24ba802a7 100644 --- a/DiscImageChef.Filesystems/F2FS.cs +++ b/DiscImageChef.Filesystems/F2FS.cs @@ -116,6 +116,13 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.Unicode; } + public F2FS(Encoding encoding) + { + Name = "F2FS Plugin"; + PluginUUID = new Guid("82B0920F-5F0D-4063-9F57-ADE0AE02ECE5"); + CurrentEncoding = Encoding.Unicode; + } + public F2FS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "F2FS Plugin"; diff --git a/DiscImageChef.Filesystems/FAT.cs b/DiscImageChef.Filesystems/FAT.cs index 099c10d53..ec4703574 100644 --- a/DiscImageChef.Filesystems/FAT.cs +++ b/DiscImageChef.Filesystems/FAT.cs @@ -51,6 +51,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("IBM437"); } + public FAT(Encoding encoding) + { + Name = "Microsoft File Allocation Table"; + PluginUUID = new Guid("33513B2C-0D26-0D2D-32C3-79D8611158E0"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("IBM437"); + else + CurrentEncoding = encoding; + } + public FAT(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Microsoft File Allocation Table"; diff --git a/DiscImageChef.Filesystems/FATX.cs b/DiscImageChef.Filesystems/FATX.cs index 57dfaeb48..3213f5a64 100644 --- a/DiscImageChef.Filesystems/FATX.cs +++ b/DiscImageChef.Filesystems/FATX.cs @@ -58,6 +58,13 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public FATX(Encoding encoding) + { + Name = "FATX Filesystem Plugin"; + PluginUUID = new Guid("ED27A721-4A17-4649-89FD-33633B46E228"); + CurrentEncoding = Encoding.UTF8; + } + public FATX(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "FATX Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/FFS.cs b/DiscImageChef.Filesystems/FFS.cs index 87f5d4ce3..b9762cd84 100644 --- a/DiscImageChef.Filesystems/FFS.cs +++ b/DiscImageChef.Filesystems/FFS.cs @@ -51,6 +51,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public FFSPlugin(Encoding encoding) + { + Name = "BSD Fast File System (aka UNIX File System, UFS)"; + PluginUUID = new Guid("CC90D342-05DB-48A8-988C-C1FE000034A3"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public FFSPlugin(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "BSD Fast File System (aka UNIX File System, UFS)"; diff --git a/DiscImageChef.Filesystems/Filesystem.cs b/DiscImageChef.Filesystems/Filesystem.cs index d5fa2e9ba..ab1c485e1 100644 --- a/DiscImageChef.Filesystems/Filesystem.cs +++ b/DiscImageChef.Filesystems/Filesystem.cs @@ -65,6 +65,11 @@ namespace DiscImageChef.Filesystems { } + // TODO: Call other constructors + protected Filesystem(Encoding encoding) + { + } + /// /// Initializes a filesystem instance prepared for reading contents /// diff --git a/DiscImageChef.Filesystems/Fossil.cs b/DiscImageChef.Filesystems/Fossil.cs index 26e32d527..2963a088f 100644 --- a/DiscImageChef.Filesystems/Fossil.cs +++ b/DiscImageChef.Filesystems/Fossil.cs @@ -133,6 +133,14 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public Fossil(Encoding encoding) + { + Name = "Fossil Filesystem Plugin"; + PluginUUID = new Guid("932BF104-43F6-494F-973C-45EF58A51DA9"); + // Technically everything on Plan 9 from Bell Labs is in UTF-8 + CurrentEncoding = Encoding.UTF8; + } + public Fossil(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Fossil Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/HAMMER.cs b/DiscImageChef.Filesystems/HAMMER.cs index 001c1481e..232aca489 100644 --- a/DiscImageChef.Filesystems/HAMMER.cs +++ b/DiscImageChef.Filesystems/HAMMER.cs @@ -55,6 +55,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public HAMMER(Encoding encoding) + { + Name = "HAMMER Filesystem"; + PluginUUID = new Guid("91A188BF-5FD7-4677-BBD3-F59EBA9C864D"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public HAMMER(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "HAMMER Filesystem"; diff --git a/DiscImageChef.Filesystems/HPFS.cs b/DiscImageChef.Filesystems/HPFS.cs index 3593fe078..41face481 100644 --- a/DiscImageChef.Filesystems/HPFS.cs +++ b/DiscImageChef.Filesystems/HPFS.cs @@ -49,6 +49,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("ibm850"); } + public HPFS(Encoding encoding) + { + Name = "OS/2 High Performance File System"; + PluginUUID = new Guid("33513B2C-f590-4acb-8bf2-0b1d5e19dec5"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("ibm850"); + else + CurrentEncoding = encoding; + } + public HPFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "OS/2 High Performance File System"; diff --git a/DiscImageChef.Filesystems/ISO9660/ISO9660.cs b/DiscImageChef.Filesystems/ISO9660/ISO9660.cs index f96499aef..c56243a0a 100644 --- a/DiscImageChef.Filesystems/ISO9660/ISO9660.cs +++ b/DiscImageChef.Filesystems/ISO9660/ISO9660.cs @@ -45,12 +45,24 @@ namespace DiscImageChef.Filesystems.ISO9660 CurrentEncoding = Encoding.ASCII; } + public ISO9660(Encoding encoding) + { + Name = "ISO9660 Filesystem"; + PluginUUID = new Guid("d812f4d3-c357-400d-90fd-3b22ef786aa8"); + if(encoding == null) + CurrentEncoding = Encoding.ASCII; + else + CurrentEncoding = encoding; + } + public ISO9660(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "ISO9660 Filesystem"; PluginUUID = new Guid("d812f4d3-c357-400d-90fd-3b22ef786aa8"); if(encoding == null) CurrentEncoding = Encoding.ASCII; + else + CurrentEncoding = encoding; } } } diff --git a/DiscImageChef.Filesystems/JFS.cs b/DiscImageChef.Filesystems/JFS.cs index 56b641a0a..daff8ca87 100644 --- a/DiscImageChef.Filesystems/JFS.cs +++ b/DiscImageChef.Filesystems/JFS.cs @@ -141,6 +141,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public JFS(Encoding encoding) + { + Name = "JFS Plugin"; + PluginUUID = new Guid("D3BE2A41-8F28-4055-94DC-BB6C72A0E9C4"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public JFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "JFS Plugin"; diff --git a/DiscImageChef.Filesystems/LIF.cs b/DiscImageChef.Filesystems/LIF.cs index 7c4da4dfa..342aba987 100644 --- a/DiscImageChef.Filesystems/LIF.cs +++ b/DiscImageChef.Filesystems/LIF.cs @@ -70,6 +70,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public LIF(Encoding encoding) + { + Name = "HP Logical Interchange Format Plugin"; + PluginUUID = new Guid("41535647-77A5-477B-9206-DA727ACDC704"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public LIF(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "HP Logical Interchange Format Plugin"; diff --git a/DiscImageChef.Filesystems/LisaFS/LisaFS.cs b/DiscImageChef.Filesystems/LisaFS/LisaFS.cs index 7c1fc5797..97fa3ae40 100644 --- a/DiscImageChef.Filesystems/LisaFS/LisaFS.cs +++ b/DiscImageChef.Filesystems/LisaFS/LisaFS.cs @@ -75,6 +75,13 @@ namespace DiscImageChef.Filesystems.LisaFS CurrentEncoding = new Claunia.Encoding.LisaRoman(); } + public LisaFS(Encoding encoding) + { + Name = "Apple Lisa File System"; + PluginUUID = new Guid("7E6034D1-D823-4248-A54D-239742B28391"); + CurrentEncoding = new Claunia.Encoding.LisaRoman(); + } + public LisaFS(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { device = imagePlugin; diff --git a/DiscImageChef.Filesystems/Locus.cs b/DiscImageChef.Filesystems/Locus.cs index 9850a48c2..3bc92d642 100644 --- a/DiscImageChef.Filesystems/Locus.cs +++ b/DiscImageChef.Filesystems/Locus.cs @@ -203,6 +203,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public Locus(Encoding encoding) + { + Name = "Locus Filesystem Plugin"; + PluginUUID = new Guid("1A70B30A-437D-479A-88E1-D0C9C1797FF4"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public Locus(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Locus Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/MicroDOS.cs b/DiscImageChef.Filesystems/MicroDOS.cs index 37452ff43..d1b6df190 100644 --- a/DiscImageChef.Filesystems/MicroDOS.cs +++ b/DiscImageChef.Filesystems/MicroDOS.cs @@ -52,6 +52,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("koi8-r"); } + public MicroDOS(Encoding encoding) + { + Name = "MicroDOS file system"; + PluginUUID = new Guid("9F9A364A-1A27-48A3-B730-7A7122000324"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("koi8-r"); + else + CurrentEncoding = encoding; + } + public MicroDOS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "MicroDOS file system"; diff --git a/DiscImageChef.Filesystems/MinixFS.cs b/DiscImageChef.Filesystems/MinixFS.cs index c5876e135..39d5e1af9 100644 --- a/DiscImageChef.Filesystems/MinixFS.cs +++ b/DiscImageChef.Filesystems/MinixFS.cs @@ -70,6 +70,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public MinixFS(Encoding encoding) + { + Name = "Minix Filesystem"; + PluginUUID = new Guid("FE248C3B-B727-4AE5-A39F-79EA9A07D4B3"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public MinixFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Minix Filesystem"; diff --git a/DiscImageChef.Filesystems/NILFS2.cs b/DiscImageChef.Filesystems/NILFS2.cs index 825ba735d..d2712995d 100644 --- a/DiscImageChef.Filesystems/NILFS2.cs +++ b/DiscImageChef.Filesystems/NILFS2.cs @@ -104,6 +104,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public NILFS2(Encoding encoding) + { + Name = "NILFS2 Plugin"; + PluginUUID = new Guid("35224226-C5CC-48B5-8FFD-3781E91E86B6"); + if(encoding == null) + CurrentEncoding = Encoding.UTF8; + else + CurrentEncoding = encoding; + } + public NILFS2(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "NILFS2 Plugin"; diff --git a/DiscImageChef.Filesystems/NTFS.cs b/DiscImageChef.Filesystems/NTFS.cs index 1a5bcce93..8e2d9d36c 100644 --- a/DiscImageChef.Filesystems/NTFS.cs +++ b/DiscImageChef.Filesystems/NTFS.cs @@ -49,6 +49,13 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.Unicode; } + public NTFS(Encoding encoding) + { + Name = "New Technology File System (NTFS)"; + PluginUUID = new Guid("33513B2C-1e6d-4d21-a660-0bbc789c3871"); + CurrentEncoding = Encoding.Unicode; + } + public NTFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "New Technology File System (NTFS)"; diff --git a/DiscImageChef.Filesystems/Nintendo.cs b/DiscImageChef.Filesystems/Nintendo.cs index a39947722..b7c326c4e 100644 --- a/DiscImageChef.Filesystems/Nintendo.cs +++ b/DiscImageChef.Filesystems/Nintendo.cs @@ -47,6 +47,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("shift_jis"); } + public NintendoPlugin(Encoding encoding) + { + Name = "Nintendo optical filesystems"; + PluginUUID = new Guid("4675fcb4-4418-4288-9e4a-33d6a4ac1126"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("shift_jis"); + else + CurrentEncoding = encoding; + } + public NintendoPlugin(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Nintendo optical filesystems"; diff --git a/DiscImageChef.Filesystems/ODS.cs b/DiscImageChef.Filesystems/ODS.cs index 4334516aa..3b46903db 100644 --- a/DiscImageChef.Filesystems/ODS.cs +++ b/DiscImageChef.Filesystems/ODS.cs @@ -57,6 +57,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); } + public ODS(Encoding encoding) + { + Name = "Files-11 On-Disk Structure"; + PluginUUID = new Guid("de20633c-8021-4384-aeb0-83b0df14491f"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); + else + CurrentEncoding = encoding; + } + public ODS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Files-11 On-Disk Structure"; diff --git a/DiscImageChef.Filesystems/Opera.cs b/DiscImageChef.Filesystems/Opera.cs index ad1be5132..db558d127 100644 --- a/DiscImageChef.Filesystems/Opera.cs +++ b/DiscImageChef.Filesystems/Opera.cs @@ -47,6 +47,14 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.ASCII; } + public OperaFS(Encoding encoding) + { + Name = "Opera Filesystem Plugin"; + PluginUUID = new Guid("0ec84ec7-eae6-4196-83fe-943b3fe46dbd"); + // TODO: Find correct default encoding + CurrentEncoding = Encoding.ASCII; + } + public OperaFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Opera Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/PCEngine.cs b/DiscImageChef.Filesystems/PCEngine.cs index 7cab92a62..ae571b24f 100644 --- a/DiscImageChef.Filesystems/PCEngine.cs +++ b/DiscImageChef.Filesystems/PCEngine.cs @@ -46,6 +46,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("shift_jis"); } + public PCEnginePlugin(Encoding encoding) + { + Name = "PC Engine CD Plugin"; + PluginUUID = new Guid("e5ee6d7c-90fa-49bd-ac89-14ef750b8af3"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("shift_jis"); + else + CurrentEncoding = encoding; + } + public PCEnginePlugin(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "PC Engine CD Plugin"; diff --git a/DiscImageChef.Filesystems/PFS.cs b/DiscImageChef.Filesystems/PFS.cs index 11821388d..04615b607 100644 --- a/DiscImageChef.Filesystems/PFS.cs +++ b/DiscImageChef.Filesystems/PFS.cs @@ -47,6 +47,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); } + public PFS(Encoding encoding) + { + Name = "Professional File System"; + PluginUUID = new Guid("68DE769E-D957-406A-8AE4-3781CA8CDA77"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); + else + CurrentEncoding = encoding; + } + public PFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Professional File System"; diff --git a/DiscImageChef.Filesystems/ProDOS.cs b/DiscImageChef.Filesystems/ProDOS.cs index 283a6f17d..65a5203cb 100644 --- a/DiscImageChef.Filesystems/ProDOS.cs +++ b/DiscImageChef.Filesystems/ProDOS.cs @@ -86,6 +86,14 @@ namespace DiscImageChef.Filesystems CurrentEncoding = new Claunia.Encoding.LisaRoman(); } + public ProDOSPlugin(Encoding encoding) + { + Name = "Apple ProDOS filesystem"; + PluginUUID = new Guid("43874265-7B8A-4739-BCF7-07F80D5932BF"); + // TODO: Until Apple ][ encoding is implemented + CurrentEncoding = new Claunia.Encoding.LisaRoman(); + } + public ProDOSPlugin(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Apple ProDOS filesystem"; diff --git a/DiscImageChef.Filesystems/QNX4.cs b/DiscImageChef.Filesystems/QNX4.cs index 3dbfe6cc0..382275e63 100644 --- a/DiscImageChef.Filesystems/QNX4.cs +++ b/DiscImageChef.Filesystems/QNX4.cs @@ -115,6 +115,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public QNX4(Encoding encoding) + { + Name = "QNX4 Plugin"; + PluginUUID = new Guid("E73A63FA-B5B0-48BF-BF82-DA5F0A8170D2"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public QNX4(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "QNX4 Plugin"; diff --git a/DiscImageChef.Filesystems/QNX6.cs b/DiscImageChef.Filesystems/QNX6.cs index deaafd1dc..ae2934e7e 100644 --- a/DiscImageChef.Filesystems/QNX6.cs +++ b/DiscImageChef.Filesystems/QNX6.cs @@ -110,6 +110,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public QNX6(Encoding encoding) + { + Name = "QNX6 Plugin"; + PluginUUID = new Guid("3E610EA2-4D08-4D70-8947-830CD4C74FC0"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public QNX6(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "QNX6 Plugin"; diff --git a/DiscImageChef.Filesystems/RBF.cs b/DiscImageChef.Filesystems/RBF.cs index 3ee70f69d..f2ce5d611 100644 --- a/DiscImageChef.Filesystems/RBF.cs +++ b/DiscImageChef.Filesystems/RBF.cs @@ -165,6 +165,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public RBF(Encoding encoding) + { + Name = "OS-9 Random Block File Plugin"; + PluginUUID = new Guid("E864E45B-0B52-4D29-A858-7BDFA9199FB2"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public RBF(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "OS-9 Random Block File Plugin"; diff --git a/DiscImageChef.Filesystems/RT11.cs b/DiscImageChef.Filesystems/RT11.cs index 0a87c4e3a..3e4e02994 100644 --- a/DiscImageChef.Filesystems/RT11.cs +++ b/DiscImageChef.Filesystems/RT11.cs @@ -49,6 +49,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); } + public RT11(Encoding encoding) + { + Name = "RT-11 file system"; + PluginUUID = new Guid("DB3E2F98-8F98-463C-8126-E937843DA024"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); + else + CurrentEncoding = encoding; + } + public RT11(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "RT-11 file system"; diff --git a/DiscImageChef.Filesystems/Reiser.cs b/DiscImageChef.Filesystems/Reiser.cs index c741d0eda..ba0fc0776 100644 --- a/DiscImageChef.Filesystems/Reiser.cs +++ b/DiscImageChef.Filesystems/Reiser.cs @@ -98,6 +98,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public Reiser(Encoding encoding) + { + Name = "Reiser Filesystem Plugin"; + PluginUUID = new Guid("1D8CD8B8-27E6-410F-9973-D16409225FBA"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public Reiser(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Reiser Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/Reiser4.cs b/DiscImageChef.Filesystems/Reiser4.cs index 3ab243d04..2e194a580 100644 --- a/DiscImageChef.Filesystems/Reiser4.cs +++ b/DiscImageChef.Filesystems/Reiser4.cs @@ -63,6 +63,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public Reiser4(Encoding encoding) + { + Name = "Reiser4 Filesystem Plugin"; + PluginUUID = new Guid("301F2D00-E8D5-4F04-934E-81DFB21D15BA"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public Reiser4(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Reiser4 Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/SFS.cs b/DiscImageChef.Filesystems/SFS.cs index b4234af66..2e4909c31 100644 --- a/DiscImageChef.Filesystems/SFS.cs +++ b/DiscImageChef.Filesystems/SFS.cs @@ -47,6 +47,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); } + public SFS(Encoding encoding) + { + Name = "SmartFileSystem"; + PluginUUID = new Guid("26550C19-3671-4A2D-BC2F-F20CEB7F48DC"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-1"); + else + CurrentEncoding = encoding; + } + public SFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "SmartFileSystem"; diff --git a/DiscImageChef.Filesystems/SolarFS.cs b/DiscImageChef.Filesystems/SolarFS.cs index f8e92a2a6..59c47e177 100644 --- a/DiscImageChef.Filesystems/SolarFS.cs +++ b/DiscImageChef.Filesystems/SolarFS.cs @@ -48,6 +48,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public SolarFS(Encoding encoding) + { + Name = "Solar_OS filesystem"; + PluginUUID = new Guid("EA3101C1-E777-4B4F-B5A3-8C57F50F6E65"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public SolarFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Solar_OS filesystem"; diff --git a/DiscImageChef.Filesystems/Squash.cs b/DiscImageChef.Filesystems/Squash.cs index ed2d6b80f..573dbad78 100644 --- a/DiscImageChef.Filesystems/Squash.cs +++ b/DiscImageChef.Filesystems/Squash.cs @@ -47,6 +47,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public Squash(Encoding encoding) + { + Name = "Squash filesystem"; + PluginUUID = new Guid("F8F6E46F-7A2A-48E3-9C0A-46AF4DC29E09"); + if(encoding == null) + CurrentEncoding = Encoding.UTF8; + else + CurrentEncoding = encoding; + } + public Squash(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Squash filesystem"; diff --git a/DiscImageChef.Filesystems/SysV.cs b/DiscImageChef.Filesystems/SysV.cs index 24b54bd68..466b9a865 100644 --- a/DiscImageChef.Filesystems/SysV.cs +++ b/DiscImageChef.Filesystems/SysV.cs @@ -66,6 +66,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public SysVfs(Encoding encoding) + { + Name = "UNIX System V filesystem"; + PluginUUID = new Guid("9B8D016A-8561-400E-A12A-A198283C211D"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public SysVfs(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "UNIX System V filesystem"; diff --git a/DiscImageChef.Filesystems/UCSDPascal/UCSDPascal.cs b/DiscImageChef.Filesystems/UCSDPascal/UCSDPascal.cs index 526c7e0df..0c96e65d5 100644 --- a/DiscImageChef.Filesystems/UCSDPascal/UCSDPascal.cs +++ b/DiscImageChef.Filesystems/UCSDPascal/UCSDPascal.cs @@ -57,6 +57,14 @@ namespace DiscImageChef.Filesystems.UCSDPascal CurrentEncoding = new Claunia.Encoding.LisaRoman(); } + public PascalPlugin(Encoding encoding) + { + Name = "U.C.S.D. Pascal filesystem"; + PluginUUID = new Guid("B0AC2CB5-72AA-473A-9200-270B5A2C2D53"); + // TODO: Until Apple ][ encoding is implemented + CurrentEncoding = new Claunia.Encoding.LisaRoman(); + } + public PascalPlugin(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { device = imagePlugin; diff --git a/DiscImageChef.Filesystems/UDF.cs b/DiscImageChef.Filesystems/UDF.cs index a8c30a6ae..c522144e3 100644 --- a/DiscImageChef.Filesystems/UDF.cs +++ b/DiscImageChef.Filesystems/UDF.cs @@ -51,6 +51,14 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public UDF(Encoding encoding) + { + Name = "Universal Disk Format"; + PluginUUID = new Guid("83976FEC-A91B-464B-9293-56C719461BAB"); + // UDF is always UTF-8 + CurrentEncoding = Encoding.UTF8; + } + public UDF(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Universal Disk Format"; diff --git a/DiscImageChef.Filesystems/UNICOS.cs b/DiscImageChef.Filesystems/UNICOS.cs index f66cbae59..6c62d2aeb 100644 --- a/DiscImageChef.Filesystems/UNICOS.cs +++ b/DiscImageChef.Filesystems/UNICOS.cs @@ -142,6 +142,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public UNICOS(Encoding encoding) + { + Name = "UNICOS Filesystem Plugin"; + PluginUUID = new Guid("61712F04-066C-44D5-A2A0-1E44C66B33F0"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public UNICOS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "UNICOS Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/UNIXBFS.cs b/DiscImageChef.Filesystems/UNIXBFS.cs index d02bda46c..baaddb5ee 100644 --- a/DiscImageChef.Filesystems/UNIXBFS.cs +++ b/DiscImageChef.Filesystems/UNIXBFS.cs @@ -50,6 +50,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public BFS(Encoding encoding) + { + Name = "UNIX Boot filesystem"; + PluginUUID = new Guid("1E6E0DA6-F7E4-494C-80C6-CB5929E96155"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public BFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "UNIX Boot filesystem"; diff --git a/DiscImageChef.Filesystems/VMfs.cs b/DiscImageChef.Filesystems/VMfs.cs index 0c59f6b26..93664463f 100644 --- a/DiscImageChef.Filesystems/VMfs.cs +++ b/DiscImageChef.Filesystems/VMfs.cs @@ -47,6 +47,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public VMfs(Encoding encoding) + { + Name = "VMware filesystem"; + PluginUUID = new Guid("EE52BDB8-B49C-4122-A3DA-AD21CBE79843"); + if(encoding == null) + CurrentEncoding = Encoding.UTF8; + else + CurrentEncoding = encoding; + } + public VMfs(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "VMware filesystem"; diff --git a/DiscImageChef.Filesystems/VxFS.cs b/DiscImageChef.Filesystems/VxFS.cs index 475555a91..9f762ebde 100644 --- a/DiscImageChef.Filesystems/VxFS.cs +++ b/DiscImageChef.Filesystems/VxFS.cs @@ -47,6 +47,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public VxFS(Encoding encoding) + { + Name = "Veritas filesystem"; + PluginUUID = new Guid("EC372605-7687-453C-8BEA-7E0DFF79CB03"); + if(encoding == null) + CurrentEncoding = Encoding.UTF8; + else + CurrentEncoding = encoding; + } + public VxFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Veritas filesystem"; diff --git a/DiscImageChef.Filesystems/XFS.cs b/DiscImageChef.Filesystems/XFS.cs index 8d2b12fbe..8c5202206 100644 --- a/DiscImageChef.Filesystems/XFS.cs +++ b/DiscImageChef.Filesystems/XFS.cs @@ -112,6 +112,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public XFS(Encoding encoding) + { + Name = "XFS Filesystem Plugin"; + PluginUUID = new Guid("1D8CD8B8-27E6-410F-9973-D16409225FBA"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public XFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "XFS Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/ZFS.cs b/DiscImageChef.Filesystems/ZFS.cs index b8ecaab82..40836e1e9 100644 --- a/DiscImageChef.Filesystems/ZFS.cs +++ b/DiscImageChef.Filesystems/ZFS.cs @@ -233,6 +233,14 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.UTF8; } + public ZFS(Encoding encoding) + { + Name = "ZFS Filesystem Plugin"; + PluginUUID = new Guid("0750014F-A714-4692-A369-E23F6EC3659C"); + // ZFS is always UTF-8 + CurrentEncoding = Encoding.UTF8; + } + public ZFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "ZFS Filesystem Plugin"; diff --git a/DiscImageChef.Filesystems/dump.cs b/DiscImageChef.Filesystems/dump.cs index c368a0234..8629dc79b 100644 --- a/DiscImageChef.Filesystems/dump.cs +++ b/DiscImageChef.Filesystems/dump.cs @@ -217,6 +217,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public dump(Encoding encoding) + { + Name = "dump(8) Plugin"; + PluginUUID = new Guid("E53B4D28-C858-4800-B092-DDAE80D361B9"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public dump(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "dump(8) Plugin"; diff --git a/DiscImageChef.Filesystems/exFAT.cs b/DiscImageChef.Filesystems/exFAT.cs index 57642572e..1a1310d42 100644 --- a/DiscImageChef.Filesystems/exFAT.cs +++ b/DiscImageChef.Filesystems/exFAT.cs @@ -50,6 +50,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public exFAT(Encoding encoding) + { + Name = "Microsoft Extended File Allocation Table"; + PluginUUID = new Guid("8271D088-1533-4CB3-AC28-D802B68BB95C"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public exFAT(ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Microsoft Extended File Allocation Table"; diff --git a/DiscImageChef.Filesystems/ext2FS.cs b/DiscImageChef.Filesystems/ext2FS.cs index 4535dd11c..bd0ed508e 100644 --- a/DiscImageChef.Filesystems/ext2FS.cs +++ b/DiscImageChef.Filesystems/ext2FS.cs @@ -50,6 +50,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public ext2FS(Encoding encoding) + { + Name = "Linux extended Filesystem 2, 3 and 4"; + PluginUUID = new Guid("6AA91B88-150B-4A7B-AD56-F84FB2DF4184"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public ext2FS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Linux extended Filesystem 2, 3 and 4"; diff --git a/DiscImageChef.Filesystems/extFS.cs b/DiscImageChef.Filesystems/extFS.cs index f2ca2969d..f6b8fe897 100644 --- a/DiscImageChef.Filesystems/extFS.cs +++ b/DiscImageChef.Filesystems/extFS.cs @@ -49,6 +49,16 @@ namespace DiscImageChef.Filesystems CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); } + public extFS(Encoding encoding) + { + Name = "Linux extended Filesystem"; + PluginUUID = new Guid("076CB3A2-08C2-4D69-BC8A-FCAA2E502BE2"); + if(encoding == null) + CurrentEncoding = Encoding.GetEncoding("iso-8859-15"); + else + CurrentEncoding = encoding; + } + public extFS(ImagePlugins.ImagePlugin imagePlugin, Partition partition, Encoding encoding) { Name = "Linux extended Filesystem"; diff --git a/DiscImageChef.Filesystems/packages.config b/DiscImageChef.Filesystems/packages.config index 2774a864c..a87430054 100644 --- a/DiscImageChef.Filesystems/packages.config +++ b/DiscImageChef.Filesystems/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/DiscImageChef/Commands/Analyze.cs b/DiscImageChef/Commands/Analyze.cs index 8630ab4f8..fbb438cba 100644 --- a/DiscImageChef/Commands/Analyze.cs +++ b/DiscImageChef/Commands/Analyze.cs @@ -39,6 +39,7 @@ using DiscImageChef.Filesystems; using DiscImageChef.Filters; using DiscImageChef.ImagePlugins; using DiscImageChef.PartPlugins; +using System.Text; namespace DiscImageChef.Commands { @@ -61,8 +62,26 @@ namespace DiscImageChef.Commands return; } + Encoding encoding = null; + + if(options.EncodingName != null) + { + try + { + encoding = Claunia.Encoding.Encoding.GetEncoding(options.EncodingName); + if(options.Verbose) + DicConsole.VerboseWriteLine("Using encoding for {0}.", encoding.EncodingName); + } + catch(ArgumentException) + { + DicConsole.ErrorWriteLine("Specified encoding is not supported."); + encoding = null; + return; + } + } + PluginBase plugins = new PluginBase(); - plugins.RegisterAllPlugins(); + plugins.RegisterAllPlugins(encoding); List id_plugins; Filesystem _plugin; diff --git a/DiscImageChef/Commands/CreateSidecar.cs b/DiscImageChef/Commands/CreateSidecar.cs index 63b3cf4f1..72a9d03bd 100644 --- a/DiscImageChef/Commands/CreateSidecar.cs +++ b/DiscImageChef/Commands/CreateSidecar.cs @@ -33,6 +33,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Text; using DiscImageChef.Console; using DiscImageChef.Core; using DiscImageChef.Filters; @@ -53,6 +54,25 @@ namespace DiscImageChef.Commands Sidecar.EndProgressEvent2 += Progress.EndProgress2; Sidecar.UpdateStatusEvent += Progress.UpdateStatus; + + Encoding encoding = null; + + if(options.EncodingName != null) + { + try + { + encoding = Claunia.Encoding.Encoding.GetEncoding(options.EncodingName); + if(options.Verbose) + DicConsole.VerboseWriteLine("Using encoding for {0}.", encoding.EncodingName); + } + catch(ArgumentException) + { + DicConsole.ErrorWriteLine("Specified encoding is not supported."); + encoding = null; + return; + } + } + if(File.Exists(options.InputFile)) { if(options.Tape) @@ -110,7 +130,7 @@ namespace DiscImageChef.Commands Core.Statistics.AddMediaFormat(_imageFormat.GetImageFormat()); Core.Statistics.AddFilter(inputFilter.Name); - CICMMetadataType sidecar = Sidecar.Create(_imageFormat, options.InputFile, inputFilter.UUID); + CICMMetadataType sidecar = Sidecar.Create(_imageFormat, options.InputFile, inputFilter.UUID, encoding); DicConsole.WriteLine("Writing metadata sidecar"); diff --git a/DiscImageChef/Commands/ExtractFiles.cs b/DiscImageChef/Commands/ExtractFiles.cs index a38dbd4f3..d5971de90 100644 --- a/DiscImageChef/Commands/ExtractFiles.cs +++ b/DiscImageChef/Commands/ExtractFiles.cs @@ -40,6 +40,7 @@ using System.IO; using DiscImageChef.Filters; using DiscImageChef.Core; using DiscImageChef.CommonTypes; +using System.Text; namespace DiscImageChef.Commands { @@ -62,8 +63,26 @@ namespace DiscImageChef.Commands return; } + Encoding encoding = null; + + if(options.EncodingName != null) + { + try + { + encoding = Claunia.Encoding.Encoding.GetEncoding(options.EncodingName); + if(options.Verbose) + DicConsole.VerboseWriteLine("Using encoding for {0}.", encoding.EncodingName); + } + catch(ArgumentException) + { + DicConsole.ErrorWriteLine("Specified encoding is not supported."); + encoding = null; + return; + } + } + PluginBase plugins = new PluginBase(); - plugins.RegisterAllPlugins(); + plugins.RegisterAllPlugins(encoding); List id_plugins; Filesystem _plugin; diff --git a/DiscImageChef/Commands/Ls.cs b/DiscImageChef/Commands/Ls.cs index bcfeb6205..3c76eac15 100644 --- a/DiscImageChef/Commands/Ls.cs +++ b/DiscImageChef/Commands/Ls.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; +using System.Text; using DiscImageChef.CommonTypes; using DiscImageChef.Console; using DiscImageChef.Core; @@ -58,9 +59,27 @@ namespace DiscImageChef.Commands DicConsole.ErrorWriteLine("Cannot open specified file."); return; } - + + Encoding encoding = null; + + if(options.EncodingName != null) + { + try + { + encoding = Claunia.Encoding.Encoding.GetEncoding(options.EncodingName); + if(options.Verbose) + DicConsole.VerboseWriteLine("Using encoding for {0}.", encoding.EncodingName); + } + catch(ArgumentException) + { + DicConsole.ErrorWriteLine("Specified encoding is not supported."); + encoding = null; + return; + } + } + PluginBase plugins = new PluginBase(); - plugins.RegisterAllPlugins(); + plugins.RegisterAllPlugins(encoding); List id_plugins; Filesystem _plugin; diff --git a/DiscImageChef/DiscImageChef.csproj b/DiscImageChef/DiscImageChef.csproj index 35627f04a..370c4e108 100644 --- a/DiscImageChef/DiscImageChef.csproj +++ b/DiscImageChef/DiscImageChef.csproj @@ -41,7 +41,7 @@ - ..\packages\Claunia.Encoding.1.1.0\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll + ..\packages\Claunia.Encoding.1.2.0\lib\portable40-net40+sl5+win8+wp8\Claunia.Encoding.dll @@ -147,7 +147,7 @@ - + diff --git a/DiscImageChef/Options.cs b/DiscImageChef/Options.cs index 7302c6447..e7877e6cf 100644 --- a/DiscImageChef/Options.cs +++ b/DiscImageChef/Options.cs @@ -56,6 +56,9 @@ namespace DiscImageChef [Option('i', "input", Required = true, HelpText = "Disc image.")] public string InputFile { get; set; } + + [Option('e', "encoding", Default = null, HelpText = "Name of character encoding to use.")] + public string EncodingName { get; set; } } [Verb("compare", HelpText = "Compares two disc images.")] @@ -272,8 +275,12 @@ namespace DiscImageChef public bool Tape { get; set; } [Option('b', "block-size", Required = false, Default = 512, HelpText = "Only used for tapes, indicates block size. Files in the folder whose size is not a multiple of this value will simply be ignored.")] public int BlockSize { get; set; } + + [Option('e', "encoding", Default = null, HelpText = "Name of character encoding to use.")] + public string EncodingName { get; set; } } + // TODO: Add encoding [Verb("dump-media", HelpText = "Dumps the media inserted on a device to a media image.")] public class DumpMediaOptions : CommonOptions { @@ -337,6 +344,9 @@ namespace DiscImageChef [Option('l', "long", Default = false, HelpText = "Uses long format.")] public bool Long { get; set; } + + [Option('e', "encoding", Default = null, HelpText = "Name of character encoding to use.")] + public string EncodingName { get; set; } } [Verb("extract-files", HelpText = "Extracts all files in disc image.")] @@ -350,6 +360,9 @@ namespace DiscImageChef [Option('x', "xattrs", Default = false, HelpText = "Extract extended attributes if present.")] public bool Xattrs { get; set; } + + [Option('e', "encoding", Default = null, HelpText = "Name of character encoding to use.")] + public string EncodingName { get; set; } } [Verb("list-devices", HelpText = "Lists all connected devices.")] diff --git a/DiscImageChef/packages.config b/DiscImageChef/packages.config index 641a58156..98310bc39 100644 --- a/DiscImageChef/packages.config +++ b/DiscImageChef/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file