Chromium Code Reviews| Index: base/file_util_posix.cc |
| diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc |
| index e3bab95dd8e32554c81d8b41466909e5406e0027..893c2f126beb2cc6c686a83f85ec65d4c0b4d575 100644 |
| --- a/base/file_util_posix.cc |
| +++ b/base/file_util_posix.cc |
| @@ -457,6 +457,38 @@ bool ReadSymbolicLink(const FilePath& symlink_path, |
| return true; |
| } |
| +bool GetPosixFilePermissions(const FilePath& path, int* mode) { |
| + base::ThreadRestrictions::AssertIOAllowed(); |
| + DCHECK(mode); |
| + |
| + stat_wrapper_t file_info; |
| + // Uses stat(), because on symbolic link, lstat() may not return valid |
|
satorux1
2012/07/10 00:06:54
may not -> does not
yoshiki
2012/07/10 01:31:17
Done.
|
| + // information in the permission bits st_mode. |
|
satorux1
2012/07/10 00:06:54
information in the permission bits st_mode. ->
per
yoshiki
2012/07/10 01:31:17
Done.
|
| + if (CallStat(path.value().c_str(), &file_info) != 0) |
| + return false; |
| + |
| + *mode = file_info.st_mode & FILE_PERMISSION_MASK; |
| + return true; |
| +} |
| + |
| +bool SetPosixFilePermissions(const FilePath& path, |
| + int mode) { |
| + base::ThreadRestrictions::AssertIOAllowed(); |
| + DCHECK((mode & ~FILE_PERMISSION_MASK) == 0); |
| + |
| + stat_wrapper_t stat_buf; |
| + if (CallStat(path.value().c_str(), &stat_buf) != 0) |
| + return false; |
|
satorux1
2012/07/10 00:06:54
Why should we get the current permission? This loo
yoshiki
2012/07/10 01:31:17
This obtains the higher bits (S_ISUID, S_ISGID and
satorux1
2012/07/10 06:57:17
Oh i see. Then please leave some comment like:
//
|
| + |
| + mode_t updated_mode_bits = stat_buf.st_mode & ~FILE_PERMISSION_MASK; |
| + updated_mode_bits |= mode & FILE_PERMISSION_MASK; |
| + |
| + if (HANDLE_EINTR(chmod(path.value().c_str(), updated_mode_bits)) != 0) |
| + return false; |
| + |
| + return true; |
| +} |
| + |
| // Creates and opens a temporary file in |directory|, returning the |
| // file descriptor. |path| is set to the temporary file path. |
| // This function does NOT unlink() the file. |