@@ -21,19 +21,23 @@ fn try_run(config: &Config, cmd: &mut Command) -> Result<(), ()> {
21
21
config. try_run ( cmd)
22
22
}
23
23
24
- fn extract_curl_version ( out : & [ u8 ] ) -> f32 {
24
+ fn extract_curl_version ( out : & [ u8 ] ) -> ( u16 , u16 ) {
25
25
let out = & out[ 5 ..] ;
26
- let Some ( i) = out. iter ( ) . position ( |& x| x == b' ' ) else { return 0.0 } ;
26
+ let Some ( i) = out. iter ( ) . position ( |& x| x == b' ' ) else { return ( 0 , 0 ) } ;
27
27
let out = & out[ ..i] ;
28
- let Some ( k) = out. iter ( ) . rev ( ) . position ( |& x| x == b'.' ) else { return 0.0 } ;
28
+ let Some ( k) = out. iter ( ) . rev ( ) . position ( |& x| x == b'.' ) else { return ( 0 , 0 ) } ;
29
29
let out = & out[ ..out. len ( ) - k - 1 ] ;
30
- std:: str:: from_utf8 ( out) . unwrap ( ) . parse ( ) . unwrap_or ( 0.0 )
30
+ let Ok ( s) = std:: str:: from_utf8 ( out) else { return ( 0 , 0 ) } ;
31
+ let parts = s. split ( '.' ) . collect :: < Vec < _ > > ( ) ;
32
+ let [ s_major, s_minor] = & parts[ ..] else { return ( 0 , 0 ) } ;
33
+ let ( Ok ( major) , Ok ( minor) ) = ( s_major. parse ( ) , s_minor. parse ( ) ) else { return ( 0 , 0 ) } ;
34
+ ( major, minor)
31
35
}
32
36
33
- fn curl_version ( ) -> f32 {
37
+ fn curl_version ( ) -> ( u16 , u16 ) {
34
38
let mut curl = Command :: new ( "curl" ) ;
35
39
curl. arg ( "-V" ) ;
36
- let Ok ( out) = curl. output ( ) else { return 0.0 } ;
40
+ let Ok ( out) = curl. output ( ) else { return ( 0 , 0 ) } ;
37
41
let out = out. stdout ;
38
42
extract_curl_version ( & out)
39
43
}
@@ -249,7 +253,7 @@ impl Config {
249
253
curl. arg ( "--progress-bar" ) ;
250
254
}
251
255
// --retry-all-errors was added in 7.71.0, don't use it if curl is old.
252
- if curl_version ( ) > 7.70 {
256
+ if curl_version ( ) > ( 7 , 70 ) {
253
257
curl. arg ( "--retry-all-errors" ) ;
254
258
}
255
259
curl. arg ( url) ;
0 commit comments