@@ -21,19 +21,23 @@ fn try_run(config: &Config, cmd: &mut Command) -> Result<(), ()> {
2121 config. try_run ( cmd)
2222}
2323
24- fn extract_curl_version ( out : & [ u8 ] ) -> f32 {
24+ fn extract_curl_version ( out : & [ u8 ] ) -> ( u16 , u16 ) {
2525 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 ) } ;
2727 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 ) } ;
2929 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)
3135}
3236
33- fn curl_version ( ) -> f32 {
37+ fn curl_version ( ) -> ( u16 , u16 ) {
3438 let mut curl = Command :: new ( "curl" ) ;
3539 curl. arg ( "-V" ) ;
36- let Ok ( out) = curl. output ( ) else { return 0.0 } ;
40+ let Ok ( out) = curl. output ( ) else { return ( 0 , 0 ) } ;
3741 let out = out. stdout ;
3842 extract_curl_version ( & out)
3943}
@@ -249,7 +253,7 @@ impl Config {
249253 curl. arg ( "--progress-bar" ) ;
250254 }
251255 // --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 ) {
253257 curl. arg ( "--retry-all-errors" ) ;
254258 }
255259 curl. arg ( url) ;
0 commit comments