OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 10 |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 // the filesystem, are owned by the superuser, controlled by the group | 384 // the filesystem, are owned by the superuser, controlled by the group |
385 // "admin", are not writable by all users, and contain no symbolic links. | 385 // "admin", are not writable by all users, and contain no symbolic links. |
386 // Will return false if |path| does not exist. | 386 // Will return false if |path| does not exist. |
387 BASE_EXPORT bool VerifyPathControlledByAdmin(const base::FilePath& path); | 387 BASE_EXPORT bool VerifyPathControlledByAdmin(const base::FilePath& path); |
388 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | 388 #endif // defined(OS_MACOSX) && !defined(OS_IOS) |
389 | 389 |
390 // Returns the maximum length of path component on the volume containing | 390 // Returns the maximum length of path component on the volume containing |
391 // the directory |path|, in the number of FilePath::CharType, or -1 on failure. | 391 // the directory |path|, in the number of FilePath::CharType, or -1 on failure. |
392 BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path); | 392 BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path); |
393 | 393 |
394 // A class to handle auto-closing of FILE*'s. | 394 // Functor for |ScopedFILE| (below). |
395 class ScopedFILEClose { | 395 struct ScopedFILEClose { |
396 public: | |
397 inline void operator()(FILE* x) const { | 396 inline void operator()(FILE* x) const { |
398 if (x) { | 397 if (x) |
399 fclose(x); | 398 fclose(x); |
400 } | |
401 } | 399 } |
402 }; | 400 }; |
403 | 401 |
404 typedef scoped_ptr_malloc<FILE, ScopedFILEClose> ScopedFILE; | 402 // Automatically closes |FILE*|s. |
| 403 typedef scoped_ptr<FILE, ScopedFILEClose> ScopedFILE; |
405 | 404 |
406 #if defined(OS_POSIX) | 405 #if defined(OS_POSIX) |
407 // A class to handle auto-closing of FDs. | 406 // Functor for |ScopedFD| (below). |
408 class ScopedFDClose { | 407 struct ScopedFDClose { |
409 public: | |
410 inline void operator()(int* x) const { | 408 inline void operator()(int* x) const { |
411 if (x && *x >= 0) { | 409 if (x && *x >= 0) { |
412 if (IGNORE_EINTR(close(*x)) < 0) | 410 if (IGNORE_EINTR(close(*x)) < 0) |
413 DPLOG(ERROR) << "close"; | 411 DPLOG(ERROR) << "close"; |
414 } | 412 } |
415 } | 413 } |
416 }; | 414 }; |
417 | 415 |
418 typedef scoped_ptr_malloc<int, ScopedFDClose> ScopedFD; | 416 // Automatically closes FDs (note: doesn't store the FD). |
| 417 // TODO(viettrungluu): This is a very odd API, since (unlike |FILE*|s, you'll |
| 418 // need to store the FD separately and keep its memory alive). This should |
| 419 // probably be called |ScopedFDCloser| or something like that. |
| 420 typedef scoped_ptr<int, ScopedFDClose> ScopedFD; |
419 #endif // OS_POSIX | 421 #endif // OS_POSIX |
420 | 422 |
421 #if defined(OS_LINUX) | 423 #if defined(OS_LINUX) |
422 // Broad categories of file systems as returned by statfs() on Linux. | 424 // Broad categories of file systems as returned by statfs() on Linux. |
423 enum FileSystemType { | 425 enum FileSystemType { |
424 FILE_SYSTEM_UNKNOWN, // statfs failed. | 426 FILE_SYSTEM_UNKNOWN, // statfs failed. |
425 FILE_SYSTEM_0, // statfs.f_type == 0 means unknown, may indicate AFS. | 427 FILE_SYSTEM_0, // statfs.f_type == 0 means unknown, may indicate AFS. |
426 FILE_SYSTEM_ORDINARY, // on-disk filesystem like ext2 | 428 FILE_SYSTEM_ORDINARY, // on-disk filesystem like ext2 |
427 FILE_SYSTEM_NFS, | 429 FILE_SYSTEM_NFS, |
428 FILE_SYSTEM_SMB, | 430 FILE_SYSTEM_SMB, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 // This function simulates Move(), but unlike Move() it works across volumes. | 464 // This function simulates Move(), but unlike Move() it works across volumes. |
463 // This function is not transactional. | 465 // This function is not transactional. |
464 BASE_EXPORT bool CopyAndDeleteDirectory(const FilePath& from_path, | 466 BASE_EXPORT bool CopyAndDeleteDirectory(const FilePath& from_path, |
465 const FilePath& to_path); | 467 const FilePath& to_path); |
466 #endif // defined(OS_WIN) | 468 #endif // defined(OS_WIN) |
467 | 469 |
468 } // namespace internal | 470 } // namespace internal |
469 } // namespace base | 471 } // namespace base |
470 | 472 |
471 #endif // BASE_FILE_UTIL_H_ | 473 #endif // BASE_FILE_UTIL_H_ |
OLD | NEW |