Disable Ffile_system_info for Android special directories

* src/fileio.c (Ffile_system_info): Return Qnil if FILENAME
refers to a special directory.
This commit is contained in:
Po Lu 2024-06-23 16:41:36 +08:00
parent 5f8a9cd4b6
commit 60475a73d1

View file

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