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 // This file contains utility functions for dealing with the local | 5 // This file contains utility functions for dealing with the local |
6 // filesystem. | 6 // filesystem. |
7 | 7 |
8 #ifndef BASE_FILE_UTIL_H_ | 8 #ifndef BASE_FILE_UTIL_H_ |
9 #define BASE_FILE_UTIL_H_ | 9 #define BASE_FILE_UTIL_H_ |
10 #pragma once | 10 #pragma once |
11 | 11 |
12 #include "build/build_config.h" | 12 #include "build/build_config.h" |
13 | 13 |
14 #if defined(OS_WIN) | 14 #if defined(OS_WIN) |
15 #include <windows.h> | 15 #include <windows.h> |
16 #elif defined(OS_POSIX) | 16 #elif defined(OS_POSIX) |
17 #include <sys/stat.h> | 17 #include <sys/stat.h> |
18 #include <unistd.h> | 18 #include <unistd.h> |
19 #endif | 19 #endif |
20 | 20 |
21 #include <stdio.h> | 21 #include <stdio.h> |
22 | 22 |
| 23 #include <set> |
23 #include <stack> | 24 #include <stack> |
24 #include <string> | 25 #include <string> |
25 #include <vector> | 26 #include <vector> |
26 | 27 |
27 #include "base/base_export.h" | 28 #include "base/base_export.h" |
28 #include "base/basictypes.h" | 29 #include "base/basictypes.h" |
29 #include "base/file_path.h" | 30 #include "base/file_path.h" |
30 #include "base/memory/scoped_ptr.h" | 31 #include "base/memory/scoped_ptr.h" |
31 #include "base/platform_file.h" | 32 #include "base/platform_file.h" |
32 #include "base/string16.h" | 33 #include "base/string16.h" |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 BASE_EXPORT int WriteFileDescriptor(const int fd, const char* data, int size); | 372 BASE_EXPORT int WriteFileDescriptor(const int fd, const char* data, int size); |
372 #endif | 373 #endif |
373 | 374 |
374 // Gets the current working directory for the process. | 375 // Gets the current working directory for the process. |
375 BASE_EXPORT bool GetCurrentDirectory(FilePath* path); | 376 BASE_EXPORT bool GetCurrentDirectory(FilePath* path); |
376 | 377 |
377 // Sets the current working directory for the process. | 378 // Sets the current working directory for the process. |
378 BASE_EXPORT bool SetCurrentDirectory(const FilePath& path); | 379 BASE_EXPORT bool SetCurrentDirectory(const FilePath& path); |
379 | 380 |
380 #if defined(OS_POSIX) | 381 #if defined(OS_POSIX) |
381 // Test that |path| can only be changed by a specific user and group. | 382 // Test that |path| can only be changed by a given user and members of |
| 383 // a given set of groups. |
382 // Specifically, test that all parts of |path| under (and including) |base|: | 384 // Specifically, test that all parts of |path| under (and including) |base|: |
383 // * Exist. | 385 // * Exist. |
384 // * Are owned by a specific user and group. | 386 // * Are owned by a specific user. |
385 // * Are not writable by all users. | 387 // * Are not writable by all users. |
| 388 // * Are owned by a memeber of a given set of groups, or are not writable by |
| 389 // their group. |
386 // * Are not symbolic links. | 390 // * Are not symbolic links. |
387 // This is useful for checking that a config file is administrator-controlled. | 391 // This is useful for checking that a config file is administrator-controlled. |
388 // |base| must contain |path|. | 392 // |base| must contain |path|. |
389 BASE_EXPORT bool VerifyPathControlledByUser(const FilePath& base, | 393 BASE_EXPORT bool VerifyPathControlledByUser(const FilePath& base, |
390 const FilePath& path, | 394 const FilePath& path, |
391 uid_t owner_uid, | 395 uid_t owner_uid, |
392 gid_t group_gid); | 396 const std::set<gid_t>& group_gids); |
393 #endif // defined(OS_POSIX) | 397 #endif // defined(OS_POSIX) |
394 | 398 |
395 #if defined(OS_MACOSX) | 399 #if defined(OS_MACOSX) |
396 // Is |path| writable only by a user with administrator privileges? | 400 // Is |path| writable only by a user with administrator privileges? |
397 // This function uses Mac OS conventions. The super user is assumed to have | 401 // This function uses Mac OS conventions. The super user is assumed to have |
398 // uid 0, and the administrator group is assumed to be named "admin". | 402 // uid 0, and the administrator group is assumed to be named "admin". |
399 // Testing that |path|, and every parent directory including the root of | 403 // Testing that |path|, and every parent directory including the root of |
400 // the filesystem, are owned by the superuser, controlled by the group | 404 // the filesystem, are owned by the superuser, controlled by the group |
401 // "admin", are not writable by all users, and contain no symbolic links. | 405 // "admin", are not writable by all users, and contain no symbolic links. |
402 // Will return false if |path| does not exist. | 406 // Will return false if |path| does not exist. |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
624 BASE_EXPORT bool GetFileSystemType(const FilePath& path, FileSystemType* type); | 628 BASE_EXPORT bool GetFileSystemType(const FilePath& path, FileSystemType* type); |
625 #endif | 629 #endif |
626 | 630 |
627 } // namespace file_util | 631 } // namespace file_util |
628 | 632 |
629 // Deprecated functions have been moved to this separate header file, | 633 // Deprecated functions have been moved to this separate header file, |
630 // which must be included last after all the above definitions. | 634 // which must be included last after all the above definitions. |
631 #include "base/file_util_deprecated.h" | 635 #include "base/file_util_deprecated.h" |
632 | 636 |
633 #endif // BASE_FILE_UTIL_H_ | 637 #endif // BASE_FILE_UTIL_H_ |
OLD | NEW |