OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 bool EndsWithSeparator(const FilePath& path); | 44 bool EndsWithSeparator(const FilePath& path); |
45 // These two versions are both deprecated. TODO(estade): remove them. | 45 // These two versions are both deprecated. TODO(estade): remove them. |
46 bool EndsWithSeparator(std::wstring* path); | 46 bool EndsWithSeparator(std::wstring* path); |
47 bool EndsWithSeparator(const std::wstring& path); | 47 bool EndsWithSeparator(const std::wstring& path); |
48 | 48 |
49 // Makes sure that |path| ends with a separator IFF path is a directory that | 49 // Makes sure that |path| ends with a separator IFF path is a directory that |
50 // exists. Returns true if |path| is an existing directory, false otherwise. | 50 // exists. Returns true if |path| is an existing directory, false otherwise. |
51 bool EnsureEndsWithSeparator(FilePath* path); | 51 bool EnsureEndsWithSeparator(FilePath* path); |
52 | 52 |
53 // Modifies a string by trimming all trailing separators from the end. | 53 // Modifies a string by trimming all trailing separators from the end. |
| 54 // Deprecated. FilePath does this automatically, and if it's constructed from a |
| 55 // path with a trailing separator, StripTrailingSeparators() may be used. |
54 void TrimTrailingSeparator(std::wstring* dir); | 56 void TrimTrailingSeparator(std::wstring* dir); |
55 | 57 |
56 // Strips the topmost directory from the end of 'dir'. Assumes 'dir' does not | 58 // Strips the topmost directory from the end of 'dir'. Assumes 'dir' does not |
57 // refer to a file. | 59 // refer to a file. |
58 // If 'dir' is a root directory, return without change. | 60 // If 'dir' is a root directory, return without change. |
59 // Deprecated. Use FilePath::DirName instead. | 61 // Deprecated. Use FilePath::DirName instead. |
60 void UpOneDirectory(std::wstring* dir); | 62 void UpOneDirectory(std::wstring* dir); |
61 // Strips the topmost directory from the end of 'dir'. Assumes 'dir' does not | 63 // Strips the topmost directory from the end of 'dir'. Assumes 'dir' does not |
62 // refer to a file. | 64 // refer to a file. |
63 // If 'dir' is a root directory, the result becomes empty string. | 65 // If 'dir' is a root directory, the result becomes empty string. |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 // | 368 // |
367 // |pattern| is an optional pattern for which files to match. This | 369 // |pattern| is an optional pattern for which files to match. This |
368 // works like shell globbing. For example, "*.txt" or "Foo???.doc". | 370 // works like shell globbing. For example, "*.txt" or "Foo???.doc". |
369 // However, be careful in specifying patterns that aren't cross platform | 371 // However, be careful in specifying patterns that aren't cross platform |
370 // since the underlying code uses OS-specific matching routines. In general, | 372 // since the underlying code uses OS-specific matching routines. In general, |
371 // Windows matching is less featureful than others, so test there first. | 373 // Windows matching is less featureful than others, so test there first. |
372 // If unspecified, this will match all files. | 374 // If unspecified, this will match all files. |
373 // NOTE: the pattern only matches the contents of root_path, not files in | 375 // NOTE: the pattern only matches the contents of root_path, not files in |
374 // recursive subdirectories. | 376 // recursive subdirectories. |
375 // TODO(erikkay): Fix the pattern matching to work at all levels. | 377 // TODO(erikkay): Fix the pattern matching to work at all levels. |
376 FileEnumerator(const std::wstring& root_path, | 378 FileEnumerator(const FilePath& root_path, |
377 bool recursive, | 379 bool recursive, |
378 FileEnumerator::FILE_TYPE file_type); | 380 FileEnumerator::FILE_TYPE file_type); |
379 FileEnumerator(const std::wstring& root_path, | 381 FileEnumerator(const FilePath& root_path, |
380 bool recursive, | 382 bool recursive, |
381 FileEnumerator::FILE_TYPE file_type, | 383 FileEnumerator::FILE_TYPE file_type, |
382 const std::wstring& pattern); | 384 const FilePath::StringType& pattern); |
383 ~FileEnumerator(); | 385 ~FileEnumerator(); |
384 | 386 |
385 // Returns an empty string if there are no more results. | 387 // Returns an empty string if there are no more results. |
386 std::wstring Next(); | 388 FilePath Next(); |
387 | 389 |
388 // Write the file info into |info|. | 390 // Write the file info into |info|. |
389 void GetFindInfo(FindInfo* info); | 391 void GetFindInfo(FindInfo* info); |
390 | 392 |
391 private: | 393 private: |
392 std::wstring root_path_; | 394 FilePath root_path_; |
393 bool recursive_; | 395 bool recursive_; |
394 FILE_TYPE file_type_; | 396 FILE_TYPE file_type_; |
395 std::wstring pattern_; // Empty when we want to find everything. | 397 FilePath pattern_; // Empty when we want to find everything. |
396 | 398 |
397 // Set to true when there is a find operation open. This way, we can lazily | 399 // Set to true when there is a find operation open. This way, we can lazily |
398 // start the operations when the caller calls Next(). | 400 // start the operations when the caller calls Next(). |
399 bool is_in_find_op_; | 401 bool is_in_find_op_; |
400 | 402 |
401 // A stack that keeps track of which subdirectories we still need to | 403 // A stack that keeps track of which subdirectories we still need to |
402 // enumerate in the breadth-first search. | 404 // enumerate in the breadth-first search. |
403 std::stack<std::wstring> pending_paths_; | 405 std::stack<FilePath> pending_paths_; |
404 | 406 |
405 #if defined(OS_WIN) | 407 #if defined(OS_WIN) |
406 WIN32_FIND_DATA find_data_; | 408 WIN32_FIND_DATA find_data_; |
407 HANDLE find_handle_; | 409 HANDLE find_handle_; |
408 #elif defined(OS_POSIX) | 410 #elif defined(OS_POSIX) |
409 FTS* fts_; | 411 FTS* fts_; |
410 FTSENT* fts_ent_; | 412 FTSENT* fts_ent_; |
411 #endif | 413 #endif |
412 | 414 |
413 DISALLOW_EVIL_CONSTRUCTORS(FileEnumerator); | 415 DISALLOW_EVIL_CONSTRUCTORS(FileEnumerator); |
414 }; | 416 }; |
415 | 417 |
416 // Renames a file using the SHFileOperation API to ensure that the target file | 418 // Renames a file using the SHFileOperation API to ensure that the target file |
417 // gets the correct default security descriptor in the new path. | 419 // gets the correct default security descriptor in the new path. |
418 bool RenameFileAndResetSecurityDescriptor( | 420 bool RenameFileAndResetSecurityDescriptor( |
419 const std::wstring& source_file_path, | 421 const std::wstring& source_file_path, |
420 const std::wstring& target_file_path); | 422 const std::wstring& target_file_path); |
421 | 423 |
422 } // namespace file_util | 424 } // namespace file_util |
423 | 425 |
424 #endif // BASE_FILE_UTIL_H_ | 426 #endif // BASE_FILE_UTIL_H_ |
OLD | NEW |