From 11b6c094c636e77f70becb56e1d80985cd74ed42 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 10 Sep 2016 01:49:17 +0100 Subject: [PATCH] Added more specific non-supported compression algorithms message. --- DiscImageChef.DiscImages/NDIF.cs | 16 +++++++++++++--- DiscImageChef.DiscImages/UDIF.cs | 21 +++++++++++++++++---- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/DiscImageChef.DiscImages/NDIF.cs b/DiscImageChef.DiscImages/NDIF.cs index f40f7ea7..d9e368fb 100644 --- a/DiscImageChef.DiscImages/NDIF.cs +++ b/DiscImageChef.DiscImages/NDIF.cs @@ -335,10 +335,20 @@ namespace DiscImageChef.DiscImages bChnk.sector += (uint)ImageInfo.sectors; // TODO: Handle compressed chunks - if((bChnk.type & ChunkType_CompressedMask) == ChunkType_CompressedMask) - throw new ImageNotSupportedException("Compressed chunks are not yet supported."); + if((bChnk.type == ChunkType_KenCode)) + throw new ImageNotSupportedException("Chunks compressed with KenCode are not yet supported."); + if((bChnk.type == ChunkType_RLE)) + throw new ImageNotSupportedException("Chunks compressed with RLE are not yet supported."); + if((bChnk.type == ChunkType_LZH)) + throw new ImageNotSupportedException("Chunks compressed with LZH are not yet supported."); + if((bChnk.type == ChunkType_ADC)) + throw new ImageNotSupportedException("Chunks compressed with ADC are not yet supported."); - if(bChnk.type != ChunkType_Copy && bChnk.type != ChunkType_NoCopy) + // TODO: Handle compressed chunks + if((bChnk.type > ChunkType_Copy && bChnk.type < ChunkType_KenCode) || + (bChnk.type > ChunkType_ADC && bChnk.type < ChunkType_StuffIt) || + (bChnk.type > ChunkType_StuffIt && bChnk.type < ChunkType_End) || + bChnk.type == 1) throw new ImageNotSupportedException(string.Format("Unsupported chunk type 0x{0:X8} found", bChnk.type)); chunks.Add(bChnk.sector, bChnk); diff --git a/DiscImageChef.DiscImages/UDIF.cs b/DiscImageChef.DiscImages/UDIF.cs index 5a1d5c8d..ac576c91 100644 --- a/DiscImageChef.DiscImages/UDIF.cs +++ b/DiscImageChef.DiscImages/UDIF.cs @@ -465,11 +465,24 @@ namespace DiscImageChef.DiscImages if(bChnk.type == ChunkType_Commnt) continue; - // TODO: Handle compressed chunks - if((bChnk.type & ChunkType_CompressedMask) == ChunkType_CompressedMask) - throw new ImageNotSupportedException("Compressed chunks are not yet supported."); + // TODO: Handle compressed chunks + if((bChnk.type == ChunkType_KenCode)) + throw new ImageNotSupportedException("Chunks compressed with KenCode are not yet supported."); + if((bChnk.type == ChunkType_RLE)) + throw new ImageNotSupportedException("Chunks compressed with RLE are not yet supported."); + if((bChnk.type == ChunkType_LZH)) + throw new ImageNotSupportedException("Chunks compressed with LZH are not yet supported."); + if((bChnk.type == ChunkType_ADC)) + throw new ImageNotSupportedException("Chunks compressed with ADC are not yet supported."); + if((bChnk.type == ChunkType_Zlib)) + throw new ImageNotSupportedException("Chunks compressed with zlib are not yet supported."); + if((bChnk.type == ChunkType_Bzip)) + throw new ImageNotSupportedException("Chunks compressed with bzip2 are not yet supported."); + if((bChnk.type == ChunkType_LZFSE)) + throw new ImageNotSupportedException("Chunks compressed with lzfse are not yet supported."); - if(bChnk.type != ChunkType_Zero && bChnk.type != ChunkType_Copy && bChnk.type != ChunkType_NoCopy) + if((bChnk.type > ChunkType_NoCopy && bChnk.type < ChunkType_Commnt) || + (bChnk.type > ChunkType_LZFSE && bChnk.type < ChunkType_End)) throw new ImageNotSupportedException(string.Format("Unsupported chunk type 0x{0:X8} found", bChnk.type)); if(bChnk.sectors > 0)