Index: base/file_util_linux.cc |
=================================================================== |
--- base/file_util_linux.cc (revision 248111) |
+++ base/file_util_linux.cc (working copy) |
@@ -4,11 +4,12 @@ |
#include "base/file_util.h" |
-#include "base/files/file_path.h" |
- |
#include <errno.h> |
+#include <linux/magic.h> |
#include <sys/vfs.h> |
+#include "base/files/file_path.h" |
+ |
namespace file_util { |
bool GetFileSystemType(const base::FilePath& path, FileSystemType* type) { |
@@ -20,37 +21,36 @@ |
return true; |
} |
- // While you would think the possible values of f_type would be available |
- // in a header somewhere, it appears that is not the case. These values |
- // are copied from the statfs man page. |
+ // Not all possible |statfs_buf.f_type| values are in linux/magic.h. |
+ // Missing values are copied from the statfs man page. |
switch (statfs_buf.f_type) { |
case 0: |
*type = FILE_SYSTEM_0; |
break; |
- case 0xEF53: // ext2, ext3. |
- case 0x4D44: // dos |
- case 0x5346544E: // NFTS |
- case 0x52654973: // reiser |
+ case EXT2_SUPER_MAGIC: // Also ext3 and ext4 |
+ case MSDOS_SUPER_MAGIC: |
+ case REISERFS_SUPER_MAGIC: |
+ case BTRFS_SUPER_MAGIC: |
+ case 0x5346544E: // NTFS |
case 0x58465342: // XFS |
- case 0x9123683E: // btrfs |
case 0x3153464A: // JFS |
*type = FILE_SYSTEM_ORDINARY; |
break; |
- case 0x6969: // NFS |
+ case NFS_SUPER_MAGIC: |
*type = FILE_SYSTEM_NFS; |
break; |
+ case SMB_SUPER_MAGIC: |
case 0xFF534D42: // CIFS |
- case 0x517B: // SMB |
*type = FILE_SYSTEM_SMB; |
break; |
- case 0x73757245: // Coda |
+ case CODA_SUPER_MAGIC: |
*type = FILE_SYSTEM_CODA; |
break; |
- case 0x858458f6: // ramfs |
- case 0x01021994: // tmpfs |
+ case HUGETLBFS_MAGIC: // AKA ramfs |
+ case TMPFS_MAGIC: |
*type = FILE_SYSTEM_MEMORY; |
break; |
- case 0x27e0eb: // CGROUP |
+ case CGROUP_SUPER_MAGIC: |
*type = FILE_SYSTEM_CGROUP; |
break; |
default: |
@@ -59,4 +59,4 @@ |
return true; |
} |
-} // namespace |
+} // namespace file_util |