From 4c5a2461d06abd00b52ec9fa640ddf5fa951aef5 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 28 Dec 2022 16:32:34 +1000 Subject: [PATCH] Handle broken utimes() on Android Closes https://github.com/ankidroid/Anki-Android/issues/12827 Closes https://github.com/ankidroid/Anki-Android/issues/12974 --- rslib/src/media/files.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rslib/src/media/files.rs b/rslib/src/media/files.rs index ac6e594b0..fc4bcae38 100644 --- a/rslib/src/media/files.rs +++ b/rslib/src/media/files.rs @@ -349,7 +349,13 @@ where .duration_since(time::UNIX_EPOCH) .unwrap() .as_secs() as i64; - utime::set_file_times(&dst_path, secs, secs)?; + if let Err(err) = utime::set_file_times(&dst_path, secs, secs) { + // The libc utimes() call fails on (some? all?) Android devices. Since we don't + // do automatic expiry yet, we can safely ignore the error. + if !cfg!(target_os = "android") { + return Err(err.into()); + } + } } Ok(())