OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/files/file_util.h" | 5 #include "base/files/file_util.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <linux/magic.h> | 8 #include <linux/magic.h> |
9 #include <stdint.h> | |
9 #include <sys/vfs.h> | 10 #include <sys/vfs.h> |
10 | 11 |
11 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
12 | 13 |
13 namespace base { | 14 namespace base { |
14 | 15 |
15 bool GetFileSystemType(const FilePath& path, FileSystemType* type) { | 16 bool GetFileSystemType(const FilePath& path, FileSystemType* type) { |
16 struct statfs statfs_buf; | 17 struct statfs statfs_buf; |
17 if (statfs(path.value().c_str(), &statfs_buf) < 0) { | 18 if (statfs(path.value().c_str(), &statfs_buf) < 0) { |
18 if (errno == ENOENT) | 19 if (errno == ENOENT) |
19 return false; | 20 return false; |
20 *type = FILE_SYSTEM_UNKNOWN; | 21 *type = FILE_SYSTEM_UNKNOWN; |
21 return true; | 22 return true; |
22 } | 23 } |
23 | 24 |
24 // Not all possible |statfs_buf.f_type| values are in linux/magic.h. | 25 // Not all possible |statfs_buf.f_type| values are in linux/magic.h. |
25 // Missing values are copied from the statfs man page. | 26 // Missing values are copied from the statfs man page. |
26 switch (statfs_buf.f_type) { | 27 switch (static_cast<uintmax_t>(statfs_buf.f_type)) { |
danakj
2016/05/23 02:59:54
Why is this needed?
Luis Héctor Chávez
2016/05/24 15:27:52
Added a comment.
| |
27 case 0: | 28 case 0: |
28 *type = FILE_SYSTEM_0; | 29 *type = FILE_SYSTEM_0; |
29 break; | 30 break; |
30 case EXT2_SUPER_MAGIC: // Also ext3 and ext4 | 31 case EXT2_SUPER_MAGIC: // Also ext3 and ext4 |
31 case MSDOS_SUPER_MAGIC: | 32 case MSDOS_SUPER_MAGIC: |
32 case REISERFS_SUPER_MAGIC: | 33 case REISERFS_SUPER_MAGIC: |
33 case BTRFS_SUPER_MAGIC: | 34 case BTRFS_SUPER_MAGIC: |
34 case 0x5346544E: // NTFS | 35 case 0x5346544E: // NTFS |
35 case 0x58465342: // XFS | 36 case 0x58465342: // XFS |
36 case 0x3153464A: // JFS | 37 case 0x3153464A: // JFS |
(...skipping 17 matching lines...) Expand all Loading... | |
54 case CGROUP_SUPER_MAGIC: | 55 case CGROUP_SUPER_MAGIC: |
55 *type = FILE_SYSTEM_CGROUP; | 56 *type = FILE_SYSTEM_CGROUP; |
56 break; | 57 break; |
57 default: | 58 default: |
58 *type = FILE_SYSTEM_OTHER; | 59 *type = FILE_SYSTEM_OTHER; |
59 } | 60 } |
60 return true; | 61 return true; |
61 } | 62 } |
62 | 63 |
63 } // namespace base | 64 } // namespace base |
OLD | NEW |