From 00de3fd4fb9ea7beea095fd71647c2e59b170944 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Sun, 23 Jun 2024 16:41:36 +0800 Subject: [PATCH] Disable Ffile_system_info for Android special directories * src/fileio.c (Ffile_system_info): Return Qnil if FILENAME refers to a special directory. (cherry picked from commit 60475a73d17d293f5c1e82bc5b3c058b414266e8) --- src/fileio.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/fileio.c b/src/fileio.c index 9955f83e625..7afe3e75737 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -6531,7 +6531,18 @@ If the underlying system call fails, value is nil. */) || defined STAT_STATFS4 || defined STAT_STATVFS \ || defined STAT_STATVFS64 struct fs_usage u; - if (get_fs_usage (SSDATA (ENCODE_FILE (filename)), NULL, &u) != 0) + const char *name; + + name = SSDATA (ENCODE_FILE (filename)); + +#if defined HAVE_ANDROID && !defined ANDROID_STUBIFY + /* With special directories, this information is unavailable. */ + if (android_is_special_directory (name, "/assets") + || android_is_special_directory (name, "/content")) + return Qnil; +#endif /* defined HAVE_ANDROID && !defined ANDROID_STUBIFY */ + + if (get_fs_usage (name, NULL, &u) != 0) return errno == ENOSYS ? Qnil : file_attribute_errno (filename, errno); return list3 (blocks_to_bytes (u.fsu_blocksize, u.fsu_blocks, false), blocks_to_bytes (u.fsu_blocksize, u.fsu_bfree, false), -- 2.39.2