1
+ use crate :: Method ;
2
+
1
3
use super :: encoding;
2
4
3
5
/// Any zip-related error, from invalid archives to encoding problems.
@@ -24,12 +26,30 @@ pub enum Error {
24
26
UnknownSize ,
25
27
}
26
28
29
+ impl Error {
30
+ #[ allow( unused) ]
31
+ pub ( crate ) fn method_not_supported ( method : Method ) -> Self {
32
+ Self :: Unsupported ( UnsupportedError :: MethodNotSupported ( method) )
33
+ }
34
+
35
+ #[ allow( unused) ]
36
+ pub ( crate ) fn method_not_enabled ( method : Method ) -> Self {
37
+ Self :: Unsupported ( UnsupportedError :: MethodNotEnabled ( method) )
38
+ }
39
+ }
40
+
27
41
#[ derive( Debug , thiserror:: Error ) ]
28
42
pub enum UnsupportedError {
29
- #[ error( "unsupported compression method: {0:?}" ) ]
30
- UnsupportedCompressionMethod ( crate :: format:: Method ) ,
43
+ #[ error( "compression method not supported: {0:?}" ) ]
44
+ MethodNotSupported ( crate :: format:: Method ) ,
45
+
31
46
#[ error( "compression method supported, but not enabled in this build: {0:?}" ) ]
32
- CompressionMethodNotEnabled ( crate :: format:: Method ) ,
47
+ MethodNotEnabled ( crate :: format:: Method ) ,
48
+
49
+ #[ error( "only LZMA2.0 is supported, found LZMA{minor}.{major}" ) ]
50
+ LzmaVersionUnsupported { minor : u8 , major : u8 } ,
51
+ #[ error( "LZMA properties header wrong size: expected {expected} bytes, got {actual} bytes" ) ]
52
+ LzmaPropertiesHeaderWrongSize { expected : u16 , actual : u16 } ,
33
53
}
34
54
35
55
/// Specific zip format errors, mostly due to invalid zip archives but that could also stem from
@@ -93,6 +113,9 @@ pub enum FormatError {
93
113
/// The CRC-32 checksum didn't match.
94
114
#[ error( "checksum didn't match: expected {expected:x?}, got {actual:x?}" ) ]
95
115
WrongChecksum { expected : u32 , actual : u32 } ,
116
+
117
+ #[ error( "lzma properties larger than max" ) ]
118
+ LzmaPropertiesLargerThanMax ,
96
119
}
97
120
98
121
impl From < Error > for std:: io:: Error {
0 commit comments