@@ -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