1
1
use crate :: {
2
- immutable:: { Error , Signature } ,
2
+ immutable:: { decode , Signature } ,
3
3
ByteSlice , Sign , Time ,
4
4
} ;
5
5
use bstr:: { BStr , BString , ByteVec } ;
@@ -18,7 +18,7 @@ pub(crate) const NL: &[u8] = b"\n";
18
18
pub ( crate ) const SPACE : & [ u8 ] = b" " ;
19
19
pub ( crate ) const SPACE_OR_NL : & [ u8 ] = b" \n " ;
20
20
21
- pub ( crate ) fn any_header_field_multi_line ( i : & [ u8 ] ) -> IResult < & [ u8 ] , ( & [ u8 ] , BString ) , Error > {
21
+ pub ( crate ) fn any_header_field_multi_line ( i : & [ u8 ] ) -> IResult < & [ u8 ] , ( & [ u8 ] , BString ) , decode :: Error > {
22
22
let ( i, ( k, o) ) = peek ( tuple ( (
23
23
terminated ( is_not ( SPACE_OR_NL ) , tag ( SPACE ) ) ,
24
24
recognize ( tuple ( (
@@ -45,15 +45,15 @@ pub(crate) fn any_header_field_multi_line(i: &[u8]) -> IResult<&[u8], (&[u8], BS
45
45
pub ( crate ) fn header_field < ' a , T > (
46
46
i : & ' a [ u8 ] ,
47
47
name : & ' static [ u8 ] ,
48
- parse_value : impl Fn ( & ' a [ u8 ] ) -> IResult < & ' a [ u8 ] , T , Error > ,
49
- ) -> IResult < & ' a [ u8 ] , T , Error > {
48
+ parse_value : impl Fn ( & ' a [ u8 ] ) -> IResult < & ' a [ u8 ] , T , decode :: Error > ,
49
+ ) -> IResult < & ' a [ u8 ] , T , decode :: Error > {
50
50
terminated ( preceded ( terminated ( tag ( name) , tag ( SPACE ) ) , parse_value) , tag ( NL ) ) ( i)
51
51
}
52
52
53
53
pub ( crate ) fn any_header_field < ' a , T > (
54
54
i : & ' a [ u8 ] ,
55
- parse_value : impl Fn ( & ' a [ u8 ] ) -> IResult < & ' a [ u8 ] , T , Error > ,
56
- ) -> IResult < & ' a [ u8 ] , ( & ' a [ u8 ] , T ) , Error > {
55
+ parse_value : impl Fn ( & ' a [ u8 ] ) -> IResult < & ' a [ u8 ] , T , decode :: Error > ,
56
+ ) -> IResult < & ' a [ u8 ] , ( & ' a [ u8 ] , T ) , decode :: Error > {
57
57
terminated (
58
58
tuple ( ( terminated ( is_not ( SPACE_OR_NL ) , tag ( SPACE ) ) , parse_value) ) ,
59
59
tag ( NL ) ,
@@ -64,11 +64,11 @@ fn is_hex_digit_lc(b: u8) -> bool {
64
64
matches ! ( b, b'0' ..=b'9' | b'a' ..=b'f' )
65
65
}
66
66
67
- pub ( crate ) fn hex_sha1 ( i : & [ u8 ] ) -> IResult < & [ u8 ] , & BStr , Error > {
67
+ pub ( crate ) fn hex_sha1 ( i : & [ u8 ] ) -> IResult < & [ u8 ] , & BStr , decode :: Error > {
68
68
take_while_m_n ( 40usize , 40 , is_hex_digit_lc) ( i) . map ( |( i, o) | ( i, o. as_bstr ( ) ) )
69
69
}
70
70
71
- pub ( crate ) fn signature ( i : & [ u8 ] ) -> IResult < & [ u8 ] , Signature < ' _ > , Error > {
71
+ pub ( crate ) fn signature ( i : & [ u8 ] ) -> IResult < & [ u8 ] , Signature < ' _ > , decode :: Error > {
72
72
let ( i, ( name, email, time_in_seconds, tzsign, tzhour, tzminute) ) = tuple ( (
73
73
terminated ( take_until ( & b" <" [ ..] ) , take ( 2usize ) ) ,
74
74
terminated ( take_until ( & b"> " [ ..] ) , take ( 2usize ) ) ,
@@ -77,15 +77,25 @@ pub(crate) fn signature(i: &[u8]) -> IResult<&[u8], Signature<'_>, Error> {
77
77
take_while_m_n ( 2usize , 2 , is_digit) ,
78
78
take_while_m_n ( 2usize , 2 , is_digit) ,
79
79
) ) ( i)
80
- . map_err ( Error :: context (
80
+ . map_err ( decode :: Error :: context (
81
81
"tagger <name> <<email>> <time seconds since epoch> <+|-><HHMM>" ,
82
82
) ) ?;
83
83
84
84
let sign = if tzsign[ 0 ] == b'-' { Sign :: Minus } else { Sign :: Plus } ;
85
- let hours = btoi :: < i32 > ( & tzhour)
86
- . map_err ( |e| nom:: Err :: Error ( Error :: ParseIntegerError ( "invalid 'hours' string" , tzhour. into ( ) , e) ) ) ?;
87
- let minutes = btoi :: < i32 > ( & tzminute)
88
- . map_err ( |e| nom:: Err :: Error ( Error :: ParseIntegerError ( "invalid 'minutes' string" , tzminute. into ( ) , e) ) ) ?;
85
+ let hours = btoi :: < i32 > ( & tzhour) . map_err ( |e| {
86
+ nom:: Err :: Error ( decode:: Error :: ParseIntegerError (
87
+ "invalid 'hours' string" ,
88
+ tzhour. into ( ) ,
89
+ e,
90
+ ) )
91
+ } ) ?;
92
+ let minutes = btoi :: < i32 > ( & tzminute) . map_err ( |e| {
93
+ nom:: Err :: Error ( decode:: Error :: ParseIntegerError (
94
+ "invalid 'minutes' string" ,
95
+ tzminute. into ( ) ,
96
+ e,
97
+ ) )
98
+ } ) ?;
89
99
let offset = ( hours * 3600 + minutes * 60 ) * if sign == Sign :: Minus { -1 } else { 1 } ;
90
100
91
101
Ok ( (
@@ -95,7 +105,7 @@ pub(crate) fn signature(i: &[u8]) -> IResult<&[u8], Signature<'_>, Error> {
95
105
email : email. as_bstr ( ) ,
96
106
time : Time {
97
107
time : btoi :: < u32 > ( time_in_seconds) . map_err ( |e| {
98
- nom:: Err :: Error ( Error :: ParseIntegerError (
108
+ nom:: Err :: Error ( decode :: Error :: ParseIntegerError (
99
109
"Could parse to seconds" ,
100
110
time_in_seconds. into ( ) ,
101
111
e,
0 commit comments