Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(913)

Unified Diff: base/file_util.h

Issue 16392011: Move FileEnumerator to its own file, do some refactoring. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix incorrect includes Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/base.gypi ('k') | base/file_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/file_util.h
diff --git a/base/file_util.h b/base/file_util.h
index 034d67c564f841e417b67476e1aa2a36cfe317ac..13190dceff09769e6f94c3a171ce541950f6ceb4 100644
--- a/base/file_util.h
+++ b/base/file_util.h
@@ -20,7 +20,6 @@
#include <stdio.h>
#include <set>
-#include <stack>
#include <string>
#include <vector>
@@ -123,9 +122,9 @@ BASE_EXPORT bool CopyFileUnsafe(const base::FilePath& from_path,
// Copies the given path, and optionally all subdirectories and their contents
// as well.
-// If there are files existing under to_path, always overwrite.
-// Returns true if successful, false otherwise.
-// Don't use wildcards on the names, it may stop working without notice.
+//
+// If there are files existing under to_path, always overwrite. Returns true
+// if successful, false otherwise. Wildcards on the names are not supported.
//
// If you only need to copy a file use CopyFile, it's faster.
BASE_EXPORT bool CopyDirectory(const base::FilePath& from_path,
@@ -428,113 +427,6 @@ class ScopedFDClose {
typedef scoped_ptr_malloc<int, ScopedFDClose> ScopedFD;
#endif // OS_POSIX
-// A class for enumerating the files in a provided path. The order of the
-// results is not guaranteed.
-//
-// DO NOT USE FROM THE MAIN THREAD of your application unless it is a test
-// program where latency does not matter. This class is blocking.
-class BASE_EXPORT FileEnumerator {
- public:
-#if defined(OS_WIN)
- typedef WIN32_FIND_DATA FindInfo;
-#elif defined(OS_POSIX)
- typedef struct {
- struct stat stat;
- std::string filename;
- } FindInfo;
-#endif
-
- enum FileType {
- FILES = 1 << 0,
- DIRECTORIES = 1 << 1,
- INCLUDE_DOT_DOT = 1 << 2,
-#if defined(OS_POSIX)
- SHOW_SYM_LINKS = 1 << 4,
-#endif
- };
-
- // |root_path| is the starting directory to search for. It may or may not end
- // in a slash.
- //
- // If |recursive| is true, this will enumerate all matches in any
- // subdirectories matched as well. It does a breadth-first search, so all
- // files in one directory will be returned before any files in a
- // subdirectory.
- //
- // |file_type|, a bit mask of FileType, specifies whether the enumerator
- // should match files, directories, or both.
- //
- // |pattern| is an optional pattern for which files to match. This
- // works like shell globbing. For example, "*.txt" or "Foo???.doc".
- // However, be careful in specifying patterns that aren't cross platform
- // since the underlying code uses OS-specific matching routines. In general,
- // Windows matching is less featureful than others, so test there first.
- // If unspecified, this will match all files.
- // NOTE: the pattern only matches the contents of root_path, not files in
- // recursive subdirectories.
- // TODO(erikkay): Fix the pattern matching to work at all levels.
- FileEnumerator(const base::FilePath& root_path,
- bool recursive,
- int file_type);
- FileEnumerator(const base::FilePath& root_path,
- bool recursive,
- int file_type,
- const base::FilePath::StringType& pattern);
- ~FileEnumerator();
-
- // Returns an empty string if there are no more results.
- base::FilePath Next();
-
- // Write the file info into |info|.
- void GetFindInfo(FindInfo* info);
-
- // Looks inside a FindInfo and determines if it's a directory.
- static bool IsDirectory(const FindInfo& info);
-
- static base::FilePath GetFilename(const FindInfo& find_info);
- static int64 GetFilesize(const FindInfo& find_info);
- static base::Time GetLastModifiedTime(const FindInfo& find_info);
-
- private:
- // Returns true if the given path should be skipped in enumeration.
- bool ShouldSkip(const base::FilePath& path);
-
-
-#if defined(OS_WIN)
- // True when find_data_ is valid.
- bool has_find_data_;
- WIN32_FIND_DATA find_data_;
- HANDLE find_handle_;
-#elif defined(OS_POSIX)
- struct DirectoryEntryInfo {
- base::FilePath filename;
- struct stat stat;
- };
-
- // Read the filenames in source into the vector of DirectoryEntryInfo's
- static bool ReadDirectory(std::vector<DirectoryEntryInfo>* entries,
- const base::FilePath& source, bool show_links);
-
- // The files in the current directory
- std::vector<DirectoryEntryInfo> directory_entries_;
-
- // The next entry to use from the directory_entries_ vector
- size_t current_directory_entry_;
-#endif
-
- base::FilePath root_path_;
- bool recursive_;
- int file_type_;
- base::FilePath::StringType pattern_; // Empty when we want to find
- // everything.
-
- // A stack that keeps track of which subdirectories we still need to
- // enumerate in the breadth-first search.
- std::stack<base::FilePath> pending_paths_;
-
- DISALLOW_COPY_AND_ASSIGN(FileEnumerator);
-};
-
#if defined(OS_LINUX)
// Broad categories of file systems as returned by statfs() on Linux.
enum FileSystemType {
« no previous file with comments | « base/base.gypi ('k') | base/file_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698